[neon/backports-jammy/kimageannotator/Neon/release] /: New upstream version 0.5.2
Boyuan Yang
null at kde.org
Tue Jan 16 14:14:19 GMT 2024
Git commit 98b3f5c0629828554d2565fe50d6a6a81536c599 by Boyuan Yang.
Committed on 14/09/2021 at 04:50.
Pushed by jriddell into branch 'Neon/release'.
New upstream version 0.5.2
A +35 -0 .github/workflows/build.yml
D +0 -31 .travis.yml
M +4 -0 CHANGELOG.md
M +1 -1 CMakeLists.txt
M +4 -4 README.md
M +1 -1 example/main.cpp
M +8 -1 src/annotations/core/AnnotationArea.cpp
M +1 -1 src/annotations/core/AnnotationArea.h
M +3 -2 src/backend/Config.cpp
M +1 -1 src/common/provider/DevicePixelRatioScaler.h
M +1 -0 src/common/provider/IDevicePixelRatioScaler.h
M +3 -2 src/gui/annotator/tabs/AnnotationTabCloser.cpp
M +1 -1 src/gui/annotator/tabs/AnnotationTabCloser.h
M +1 -7 src/gui/annotator/tabs/AnnotationTabContent.cpp
M +1 -1 src/gui/annotator/tabs/AnnotationTabContent.h
M +1 -0 src/gui/canvasModifier/ModifyCanvasWidget.cpp
M +6 -6 src/widgets/ToolPicker.cpp
M +1 -1 tests/CMakeLists.txt
M +15 -8 tests/annotations/core/AnnotationAreaTest.cpp
M +10 -2 tests/annotations/undo/AddCommandTest.cpp
M +20 -4 tests/annotations/undo/CropCommandTest.cpp
M +10 -2 tests/annotations/undo/DeleteCommandTest.cpp
M +8 -4 tests/annotations/undo/ModifyCanvasCommandTest.cpp
M +10 -2 tests/annotations/undo/PasteCommandTest.cpp
M +6 -3 tests/annotations/undo/RotateCommandTest.cpp
M +20 -4 tests/annotations/undo/ScaleCommandTest.cpp
M +55 -11 tests/gui/selection/SelectionHandlerTest.cpp
M +0 -1 tests/mocks/MockDefaultParameters.h
M +1 -1 tests/mocks/MockDevicePixelRatioScaler.h
M +2 -0 translations/CMakeLists.txt
M +42 -41 translations/kImageAnnotator_de.ts
M +48 -48 translations/kImageAnnotator_el.ts
M +103 -101 translations/kImageAnnotator_id.ts
M +75 -73 translations/kImageAnnotator_it.ts
M +1 -1 translations/kImageAnnotator_pt.ts
C +98 -98 translations/kImageAnnotator_ro.ts [from: translations/kImageAnnotator_pt.ts - 062% similarity]
C +32 -32 translations/kImageAnnotator_si.ts [from: translations/kImageAnnotator_id.ts - 087% similarity]
M +40 -40 translations/kImageAnnotator_zh_CN.ts
https://invent.kde.org/neon/backports-jammy/kimageannotator/-/commit/98b3f5c0629828554d2565fe50d6a6a81536c599
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..f20bb0f
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,35 @@
+name: Build
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout at v2
+
+ - name: Setup Qt
+ run: sudo apt-get install qtbase5-dev qttools5-dev extra-cmake-modules libqt5svg5-dev xvfb
+
+ - name: Setup kColorPicker
+ run: |
+ git clone --depth 1 git://github.com/ksnip/kColorPicker
+ cd kColorPicker
+ mkdir build && cd build
+ cmake ..
+ make && sudo make install
+
+ - name: Build
+ working-directory: ${{github.workspace}}
+ run: |
+ mkdir build && cd build
+ cmake .. -DBUILD_TESTS=ON && make VERBOSE=1
+ - name: Test
+ working-directory: ${{github.workspace}}/build
+ run: xvfb-run --auto-servernum --server-num=1 --server-args="-screen 0 1024x768x24" make test CTEST_OUTPUT_ON_FAILURE=1
+
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 4930aa3..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-language: cpp
-compiler: gcc
-sudo: required
-dist: xenial
-services: xvfb
-
-before_install:
- - sudo add-apt-repository ppa:beineri/opt-qt594-xenial -y
- - sudo apt-get update -qq
-
-install:
- - sudo apt-get -y install mesa-common-dev libglu1-mesa-dev qt59base qt59tools qt59svg
- - source /opt/qt*/bin/qt*-env.sh
- - git clone git://github.com/ksnip/kColorPicker
- - cd kColorPicker
- - mkdir build && cd build
- - cmake ..
- - make && sudo make install
- - cd ../..
-
-jobs:
- include:
- - stage: build
- script:
- - mkdir build ; cd build
- - cmake .. ; make VERBOSE=1
- - stage: test
- script:
- - mkdir build ; cd build
- - cmake .. -DBUILD_TESTS=ON ; make
- - xvfb-run --auto-servernum --server-num=1 --server-args="-screen 0 1024x768x24" make test CTEST_OUTPUT_ON_FAILURE=1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e1d0362..6c848aa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Change log
+## Release 0.5.2
+* Fixed: Memory leaks caught by ASAN. ([#243](https://github.com/ksnip/kImageAnnotator/issues/243))
+* Changed: Use system font provided by QGuiApplication as default for text tool. ([#247](https://github.com/ksnip/kImageAnnotator/issues/247))
+
## Release 0.5.1
* Fixed: Crashes on destruction. ([#242](https://github.com/ksnip/kImageAnnotator/issues/242))
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c186fad..53c9449 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.5)
-project(kImageAnnotator LANGUAGES CXX VERSION 0.5.1)
+project(kImageAnnotator LANGUAGES CXX VERSION 0.5.2)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
diff --git a/README.md b/README.md
index 0e48778..518491f 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
-# kImageAnnotator [![Build Status][travis-badge]][travis-url] [![Translation status][weblate-badge]][weblate-url]
+# kImageAnnotator [![Build Status][github-badge]][github-url] [![Translation status][weblate-badge]][weblate-url]
Tool for annotating images
-Version 0.5.1
+Version 0.5.2
![kImageAnnotator](https://i.imgur.com/4vlPDUn.png "kImageAnnotator")
@@ -51,8 +51,8 @@ For translations we use [Weblate](https://hosted.weblate.org/projects/kimageanno
Stickers designed by [OpenMoji](https://openmoji.org/) – the open-source emoji and icon project.
-[travis-badge]: https://img.shields.io/travis/ksnip/kimageannotator.svg?label=travis&logo=travis
-[travis-url]: https://travis-ci.org/ksnip/kimageannotator
+[github-badge]: https://github.com/ksnip/kImageAnnotator/actions/workflows/build.yml/badge.svg
+[github-url]: https://github.com/ksnip/kImageAnnotator/actions
[weblate-badge]: https://hosted.weblate.org/widgets/kimageannotator/-/kimageannotator/svg-badge.svg
[weblate-url]: https://hosted.weblate.org/engage/kimageannotator/?utm_source=widget
\ No newline at end of file
diff --git a/example/main.cpp b/example/main.cpp
index e7f46bb..522c949 100644
--- a/example/main.cpp
+++ b/example/main.cpp
@@ -41,7 +41,7 @@ int main(int argc, char **argv)
QMainWindow mainWindow;
mainWindow.setCentralWidget(kImageAnnotator);
auto menuBar = mainWindow.menuBar();
- auto menu = new QMenu(QLatin1String("Edit"));
+ auto menu = new QMenu(QLatin1String("Edit"), &mainWindow);
auto annotationAction = new QAction(QLatin1String("Annotation"), &mainWindow);
auto cropAction = new QAction(QLatin1String("Crop"), &mainWindow);
auto scaleAction = new QAction(QLatin1String("Scale"), &mainWindow);
diff --git a/src/annotations/core/AnnotationArea.cpp b/src/annotations/core/AnnotationArea.cpp
index 02eaef2..915f49d 100644
--- a/src/annotations/core/AnnotationArea.cpp
+++ b/src/annotations/core/AnnotationArea.cpp
@@ -21,7 +21,13 @@
namespace kImageAnnotator {
-AnnotationArea::AnnotationArea(Config *config, AbstractSettingsProvider *settingsProvider, IDevicePixelRatioScaler *devicePixelRatioScaler, ZoomValueProvider *zoomValueProvider) :
+AnnotationArea::AnnotationArea(
+ Config *config,
+ AbstractSettingsProvider *settingsProvider,
+ IDevicePixelRatioScaler *devicePixelRatioScaler,
+ ZoomValueProvider *zoomValueProvider,
+ QWidget *parent) :
+ QGraphicsScene(parent),
mUndoStack(new UndoStack),
mBackgroundImage(nullptr),
mCurrentItem(nullptr),
@@ -67,6 +73,7 @@ AnnotationArea::~AnnotationArea()
delete mUndoStack;
delete mItemModifier;
delete mItemCopier;
+ delete mDevicePixelRatioScaler;
}
void AnnotationArea::loadImage(const QPixmap &image)
diff --git a/src/annotations/core/AnnotationArea.h b/src/annotations/core/AnnotationArea.h
index bfbd3f0..bf786c2 100644
--- a/src/annotations/core/AnnotationArea.h
+++ b/src/annotations/core/AnnotationArea.h
@@ -58,7 +58,7 @@ class AnnotationArea : public QGraphicsScene, public ISettingsListener
{
Q_OBJECT
public:
- explicit AnnotationArea(Config *config, AbstractSettingsProvider *settingsProvider, IDevicePixelRatioScaler *devicePixelRatioScaler, ZoomValueProvider *zoomValueProvider);
+ explicit AnnotationArea(Config *config, AbstractSettingsProvider *settingsProvider, IDevicePixelRatioScaler *devicePixelRatioScaler, ZoomValueProvider *zoomValueProvider, QWidget *parent);
~AnnotationArea() override;
virtual void loadImage(const QPixmap &image);
virtual void insertImageItem(const QPointF &position, const QPixmap &image);
diff --git a/src/backend/Config.cpp b/src/backend/Config.cpp
index beb90f2..9e49e0b 100644
--- a/src/backend/Config.cpp
+++ b/src/backend/Config.cpp
@@ -17,6 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
+#include <QGuiApplication>
#include "Config.h"
namespace kImageAnnotator {
@@ -563,8 +564,8 @@ FillModes Config::defaultToolFillMode(Tools toolType)
QFont Config::defaultToolFont(Tools tool)
{
- auto textFont = QFont(QLatin1String("Times"), 15, QFont::Bold);
- auto numberFont = QFont(QLatin1String("Helvetica"), 20, QFont::Bold);
+ auto textFont = QFont(QGuiApplication::font().family(), 15, QFont::Bold);
+ auto numberFont = QFont(QGuiApplication::font().family(), 20, QFont::Bold);
switch (tool) {
case Tools::Number:
diff --git a/src/common/provider/DevicePixelRatioScaler.h b/src/common/provider/DevicePixelRatioScaler.h
index 630f0fe..ef2686c 100644
--- a/src/common/provider/DevicePixelRatioScaler.h
+++ b/src/common/provider/DevicePixelRatioScaler.h
@@ -31,7 +31,7 @@ class DevicePixelRatioScaler : public IDevicePixelRatioScaler
{
public:
DevicePixelRatioScaler() = default;
- ~DevicePixelRatioScaler() = default;
+ ~DevicePixelRatioScaler() override = default;
QRectF scale(const QRectF &rect) const override;
qreal scaleFactor() const override;
diff --git a/src/common/provider/IDevicePixelRatioScaler.h b/src/common/provider/IDevicePixelRatioScaler.h
index 15e9f4a..67fa0a4 100644
--- a/src/common/provider/IDevicePixelRatioScaler.h
+++ b/src/common/provider/IDevicePixelRatioScaler.h
@@ -25,6 +25,7 @@ namespace kImageAnnotator {
class IDevicePixelRatioScaler
{
public:
+ virtual ~IDevicePixelRatioScaler() = default;
virtual QRectF scale(const QRectF &rect) const = 0;
virtual qreal scaleFactor() const = 0;
};
diff --git a/src/gui/annotator/tabs/AnnotationTabCloser.cpp b/src/gui/annotator/tabs/AnnotationTabCloser.cpp
index dd80d18..82391ce 100644
--- a/src/gui/annotator/tabs/AnnotationTabCloser.cpp
+++ b/src/gui/annotator/tabs/AnnotationTabCloser.cpp
@@ -21,8 +21,9 @@
namespace kImageAnnotator {
-AnnotationTabCloser::AnnotationTabCloser(QTabWidget *tabWidget) :
- mTabWidget(tabWidget)
+AnnotationTabCloser::AnnotationTabCloser(QTabWidget *parent) :
+ QObject(parent),
+ mTabWidget(parent)
{
Q_ASSERT(mTabWidget != nullptr);
}
diff --git a/src/gui/annotator/tabs/AnnotationTabCloser.h b/src/gui/annotator/tabs/AnnotationTabCloser.h
index 44290dc..79911b6 100644
--- a/src/gui/annotator/tabs/AnnotationTabCloser.h
+++ b/src/gui/annotator/tabs/AnnotationTabCloser.h
@@ -30,7 +30,7 @@ class AnnotationTabCloser : public QObject
{
Q_OBJECT
public:
- explicit AnnotationTabCloser(QTabWidget *tabWidget);
+ explicit AnnotationTabCloser(QTabWidget *parent);
~AnnotationTabCloser() override = default;
public slots:
diff --git a/src/gui/annotator/tabs/AnnotationTabContent.cpp b/src/gui/annotator/tabs/AnnotationTabContent.cpp
index 7f1081c..9a6b16f 100644
--- a/src/gui/annotator/tabs/AnnotationTabContent.cpp
+++ b/src/gui/annotator/tabs/AnnotationTabContent.cpp
@@ -24,7 +24,7 @@ namespace kImageAnnotator {
AnnotationTabContent::AnnotationTabContent(const QPixmap &pixmap, Config *config, AbstractSettingsProvider *settingsProvider) :
mAnnotationView(new AnnotationView(this)),
mZoomValueProvider(mAnnotationView->zoomValueProvider()),
- mAnnotationArea(new AnnotationArea(config, settingsProvider, new DevicePixelRatioScaler, mZoomValueProvider)),
+ mAnnotationArea(new AnnotationArea(config, settingsProvider, new DevicePixelRatioScaler, mZoomValueProvider, this)),
mMainLayout(new QHBoxLayout(this)),
mSettingsProvider(settingsProvider)
{
@@ -36,12 +36,6 @@ AnnotationTabContent::AnnotationTabContent(const QPixmap &pixmap, Config *config
connect(mZoomValueProvider, &ZoomValueProvider::zoomValueChanged, this, &AnnotationTabContent::zoomValueChange);
}
-AnnotationTabContent::~AnnotationTabContent()
-{
- delete mAnnotationArea;
- delete mAnnotationView;
-}
-
AnnotationArea* AnnotationTabContent::annotationArea() const
{
return mAnnotationArea;
diff --git a/src/gui/annotator/tabs/AnnotationTabContent.h b/src/gui/annotator/tabs/AnnotationTabContent.h
index 99610e5..a56fe20 100644
--- a/src/gui/annotator/tabs/AnnotationTabContent.h
+++ b/src/gui/annotator/tabs/AnnotationTabContent.h
@@ -36,7 +36,7 @@ class AnnotationTabContent : public QWidget
Q_OBJECT
public:
AnnotationTabContent(const QPixmap &pixmap, Config *config, AbstractSettingsProvider *settingsProvider);
- ~AnnotationTabContent() override;
+ ~AnnotationTabContent() override = default;
AnnotationArea* annotationArea() const;
ZoomValueProvider* zoomValueProvider() const;
diff --git a/src/gui/canvasModifier/ModifyCanvasWidget.cpp b/src/gui/canvasModifier/ModifyCanvasWidget.cpp
index 8fb6214..52860aa 100644
--- a/src/gui/canvasModifier/ModifyCanvasWidget.cpp
+++ b/src/gui/canvasModifier/ModifyCanvasWidget.cpp
@@ -56,6 +56,7 @@ ModifyCanvasWidget::~ModifyCanvasWidget()
delete mKeyHelper;
delete mColorDialogButton;
delete mZoomPicker;
+ delete mSelectionHandler;
}
void ModifyCanvasWidget::activate(AnnotationArea *annotationArea)
diff --git a/src/widgets/ToolPicker.cpp b/src/widgets/ToolPicker.cpp
index 97ae86b..1f1e845 100644
--- a/src/widgets/ToolPicker.cpp
+++ b/src/widgets/ToolPicker.cpp
@@ -56,7 +56,7 @@ void ToolPicker::initGui()
action = createAction(tr("Duplicate"), IconLoader::load(QLatin1String("duplicate.svg")), Qt::Key_U, Tools::Duplicate);
createButton(action);
- auto menu = new QMenu();
+ auto menu = new QMenu(this);
action = createAction(tr("Arrow"), IconLoader::load(QLatin1String("arrow.svg")), Qt::Key_A, Tools::Arrow);
menu->addAction(action);
action = createAction(tr("Double Arrow"), IconLoader::load(QLatin1String("doubleArrow.svg")), Qt::Key_D, Tools::DoubleArrow);
@@ -68,7 +68,7 @@ void ToolPicker::initGui()
action = createAction(tr("Pen"), IconLoader::load(QLatin1String("pen.svg")), Qt::Key_P, Tools::Pen);
createButton(action);
- menu = new QMenu();
+ menu = new QMenu(this);
action = createAction(tr("Marker Pen"), IconLoader::load(QLatin1String("markerPen.svg")), Qt::Key_M, Tools::MarkerPen);
menu->addAction(action);
action = createAction(tr("Marker Rectangle"), IconLoader::load(QLatin1String("markerRect.svg")), Qt::Key_J, Tools::MarkerRect);
@@ -77,7 +77,7 @@ void ToolPicker::initGui()
menu->addAction(action);
createButton(menu);
- menu = new QMenu();
+ menu = new QMenu(this);
action = createAction(tr("Text"), IconLoader::load(QLatin1String("text.svg")), Qt::Key_T, Tools::Text);
menu->addAction(action);
action = createAction(tr("Text Pointer"), IconLoader::load(QLatin1String("textPointer.svg")), Qt::Key_C, Tools::TextPointer);
@@ -86,7 +86,7 @@ void ToolPicker::initGui()
menu->addAction(action);
createButton(menu);
- menu = new QMenu();
+ menu = new QMenu(this);
action = createAction(tr("Number"), IconLoader::load(QLatin1String("number.svg")), Qt::Key_N, Tools::Number);
menu->addAction(action);
action = createAction(tr("Number Pointer"), IconLoader::load(QLatin1String("numberPointer.svg")), Qt::Key_O, Tools::NumberPointer);
@@ -95,14 +95,14 @@ void ToolPicker::initGui()
menu->addAction(action);
createButton(menu);
- menu = new QMenu();
+ menu = new QMenu(this);
action = createAction(tr("Blur"), IconLoader::load(QLatin1String("blur.svg")), Qt::Key_B, Tools::Blur);
menu->addAction(action);
action = createAction(tr("Pixelate"), IconLoader::load(QLatin1String("pixelate.svg")), Qt::Key_X, Tools::Pixelate);
menu->addAction(action);
createButton(menu);
- menu = new QMenu();
+ menu = new QMenu(this);
action = createAction(tr("Rectangle"), IconLoader::load(QLatin1String("rect.svg")), Qt::Key_R, Tools::Rect);
menu->addAction(action);
action = createAction(tr("Ellipse"), IconLoader::load(QLatin1String("ellipse.svg")), Qt::Key_E, Tools::Ellipse);
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 2145b43..ce6635e 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -40,7 +40,7 @@ set(UNITTEST_SRC
gui/annotator/tabs/AnnotationTabCloserTest.cpp
gui/annotator/tabs/AnnotationTabContextMenuTest.cpp
widgets/CustomSpinBoxTest.cpp
- widgets/misc/AttachedSeparatorTest.cpp
+ widgets/misc/AttachedSeparatorTest.cpp
widgets/settingsPicker/ToolPickerTest.cpp
widgets/settingsPicker/ColorPickerTest.cpp
widgets/settingsPicker/NumberPickerTest.cpp
diff --git a/tests/annotations/core/AnnotationAreaTest.cpp b/tests/annotations/core/AnnotationAreaTest.cpp
index 7956834..603af8c 100644
--- a/tests/annotations/core/AnnotationAreaTest.cpp
+++ b/tests/annotations/core/AnnotationAreaTest.cpp
@@ -24,7 +24,8 @@ void AnnotationAreaTest::ExportAsImage_Should_ExportImage_When_ImageSet()
QPixmap pixmap(QSize(400, 400));
pixmap.fill(QColor(Qt::green));
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
annotationArea.loadImage(pixmap);
auto resultImage = annotationArea.image();
@@ -36,7 +37,8 @@ void AnnotationAreaTest::ExportAsImage_Should_ExportImage_When_ImageSet()
void AnnotationAreaTest::ExportAsImage_Should_ExportEmptyImage_When_NoImageSet()
{
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
auto resultImage = annotationArea.image();
@@ -49,8 +51,9 @@ void AnnotationAreaTest::ExportAsImage_Should_ExportScaledImage_When_ScalingEnab
QPixmap pixmap(QSize(400, 400));
pixmap.fill(QColor(Qt::green));
MockDefaultParameters p;
- p.scaler.setScaleFactor(scaleFactor);
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ scalerMock->setScaleFactor(scaleFactor);
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
annotationArea.loadImage(pixmap);
auto resultImage = annotationArea.image();
@@ -68,7 +71,8 @@ void AnnotationAreaTest::AddAnnotationItem_Should_AddAnnotationItemToScene()
auto lineItem = new AnnotationLine(p1, properties);
lineItem->addPoint(p2, false);
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
annotationArea.addAnnotationItem(lineItem);
@@ -83,7 +87,8 @@ void AnnotationAreaTest::RemoveAnnotationItem_Should_RemoveAnnotationItemFromSce
auto lineItem = new AnnotationLine(p1, properties);
lineItem->addPoint(p2, false);
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
annotationArea.addAnnotationItem(lineItem);
QCOMPARE(annotationArea.items().contains(lineItem), true);
@@ -98,7 +103,8 @@ void AnnotationAreaTest::CanvasRect_Should_ReturnRectUnionOfAllItems_When_NoCanv
QPixmap pixmap(backgroundImageBoundingRect.size().toSize());
pixmap.fill(QColor(Qt::green));
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
annotationArea.loadImage(pixmap);
auto properties = PropertiesPtr(new AnnotationProperties(Qt::red, 2));
QPointF p1(10, 10);
@@ -119,7 +125,8 @@ void AnnotationAreaTest::CanvasRect_Should_ReturnUserDefinedRect_When_CanvasRect
QPixmap pixmap(backgroundImageBoundingRect.size());
pixmap.fill(QColor(Qt::green));
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
annotationArea.loadImage(pixmap);
auto properties = PropertiesPtr(new AnnotationProperties(Qt::red, 2));
QPointF p1(10, 10);
diff --git a/tests/annotations/undo/AddCommandTest.cpp b/tests/annotations/undo/AddCommandTest.cpp
index c8af4f2..72d2f86 100644
--- a/tests/annotations/undo/AddCommandTest.cpp
+++ b/tests/annotations/undo/AddCommandTest.cpp
@@ -23,8 +23,10 @@
void AddCommandTest::TestRedo_Should_ApplyOperation()
{
+ // arrange
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
auto properties = PropertiesPtr(new AnnotationProperties(Qt::red, 1));
QLineF line(10, 10, 20, 20);
auto item = new AnnotationLine(line.p1(), properties);
@@ -32,15 +34,19 @@ void AddCommandTest::TestRedo_Should_ApplyOperation()
AddCommand addCommand(item, &annotationArea);
QCOMPARE(annotationArea.items().contains(item), false);
+ // act
addCommand.redo();
+ // arrange
QCOMPARE(annotationArea.items().contains(item), true);
}
void AddCommandTest::TestUndo_Should_UndoOperation()
{
+ // arrange
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
auto properties = PropertiesPtr(new AnnotationProperties(Qt::red, 1));
QLineF line(10, 10, 20, 20);
auto item = new AnnotationLine(line.p1(), properties);
@@ -49,8 +55,10 @@ void AddCommandTest::TestUndo_Should_UndoOperation()
addCommand.redo();
QCOMPARE(annotationArea.items().contains(item), true);
+ // act
addCommand.undo();
+ // assert
QCOMPARE(annotationArea.items().contains(item), false);
}
diff --git a/tests/annotations/undo/CropCommandTest.cpp b/tests/annotations/undo/CropCommandTest.cpp
index fa65f0d..5b447b4 100644
--- a/tests/annotations/undo/CropCommandTest.cpp
+++ b/tests/annotations/undo/CropCommandTest.cpp
@@ -21,23 +21,29 @@
void CropCommandTest::TestRedo_Should_CropImageAndScene()
{
+ // arrange
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
QPixmap image(400, 400);
QGraphicsPixmapItem graphicsPixmapItem(image);
QRectF cropRect(100, 100, 200, 200);
CropCommand cropCommand(&graphicsPixmapItem, cropRect, &annotationArea);
+ // act
cropCommand.redo();
+ // assert
QCOMPARE(annotationArea.sceneRect().size(), cropRect.size());
QCOMPARE(graphicsPixmapItem.boundingRect().size(), cropRect.size());
}
void CropCommandTest::TestRedo_Should_MoveItemToNewPosition()
{
+ // arrange
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
QPixmap image(400, 400);
QGraphicsPixmapItem graphicsPixmapItem(image);
QRectF cropRect(100, 100, 200, 200);
@@ -48,32 +54,40 @@ void CropCommandTest::TestRedo_Should_MoveItemToNewPosition()
annotationArea.addAnnotationItem(item);
CropCommand cropCommand(&graphicsPixmapItem, cropRect, &annotationArea);
+ // act
cropCommand.redo();
+ // assert
QCOMPARE(item->position(), QPointF(50, 50));
QCOMPARE(item->boundingRect().size(), rect.size());
}
void CropCommandTest::TestUndo_Should_RestoreOriginalImageAndSceneSize()
{
+ // arrange
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
QPixmap image(400, 400);
QGraphicsPixmapItem graphicsPixmapItem(image);
QRectF cropRect(100, 100, 200, 200);
CropCommand cropCommand(&graphicsPixmapItem, cropRect, &annotationArea);
cropCommand.redo();
+ // act
cropCommand.undo();
+ // assert
QVERIFY(annotationArea.sceneRect().size() == image.size());
QVERIFY(graphicsPixmapItem.boundingRect().size() == image.size());
}
void CropCommandTest::TestUndo_Should_MoveItemBackToPreviousPosition()
{
+ // arrange
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
QPixmap image(400, 400);
QGraphicsPixmapItem graphicsPixmapItem(image);
QRectF cropRect(100, 100, 200, 200);
@@ -85,8 +99,10 @@ void CropCommandTest::TestUndo_Should_MoveItemBackToPreviousPosition()
CropCommand cropCommand(&graphicsPixmapItem, cropRect, &annotationArea);
cropCommand.redo();
+ // act
cropCommand.undo();
+ // assert
QCOMPARE(item->position(), rect.topLeft());
QCOMPARE(item->boundingRect().size(), rect.size());
}
diff --git a/tests/annotations/undo/DeleteCommandTest.cpp b/tests/annotations/undo/DeleteCommandTest.cpp
index 75c955f..bfd3aa9 100644
--- a/tests/annotations/undo/DeleteCommandTest.cpp
+++ b/tests/annotations/undo/DeleteCommandTest.cpp
@@ -23,8 +23,10 @@
void DeleteCommandTest::TestRedo_Should_ApplyOperation()
{
+ // arrange
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
auto properties = PropertiesPtr(new AnnotationProperties(Qt::red, 1));
QLineF line(10, 10, 20, 20);
AnnotationLine item(line.p1(), properties);
@@ -34,15 +36,19 @@ void DeleteCommandTest::TestRedo_Should_ApplyOperation()
QList<AbstractAnnotationItem *> items = { &item };
DeleteCommand deleteCommand(items, &annotationArea);
+ // act
deleteCommand.redo();
+ // assert
QCOMPARE(annotationArea.items().contains(&item), false);
}
void DeleteCommandTest::TestUndo_Should_UndoOperation()
{
+ // arrange
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
auto properties = PropertiesPtr(new AnnotationProperties(Qt::red, 1));
QLineF line(10, 10, 20, 20);
AnnotationLine item(line.p1(), properties);
@@ -53,8 +59,10 @@ void DeleteCommandTest::TestUndo_Should_UndoOperation()
deleteCommand.redo();
QCOMPARE(annotationArea.items().contains(&item), false);
+ // act
deleteCommand.undo();
+ // assert
QCOMPARE(annotationArea.items().contains(&item), true);
}
diff --git a/tests/annotations/undo/ModifyCanvasCommandTest.cpp b/tests/annotations/undo/ModifyCanvasCommandTest.cpp
index 2ad7466..915d65b 100644
--- a/tests/annotations/undo/ModifyCanvasCommandTest.cpp
+++ b/tests/annotations/undo/ModifyCanvasCommandTest.cpp
@@ -22,7 +22,8 @@
void ModifyCanvasCommandTest::Redo_Should_ModifyCanvasSizeAndColor_When_SizeAndColorChanged()
{
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
QPixmap image(400, 400);
annotationArea.loadImage(image);
QRectF newCanvasRect(100, 100, 200, 200);
@@ -39,7 +40,8 @@ void ModifyCanvasCommandTest::Redo_Should_ModifyCanvasSizeAndColor_When_SizeAndC
void ModifyCanvasCommandTest::Redo_Should_OnlyModifyCanvasColor_When_OnlyColorChanged()
{
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
QPixmap image(400, 400);
annotationArea.loadImage(image);
QColor newCanvasColor(Qt::red);
@@ -56,7 +58,8 @@ void ModifyCanvasCommandTest::Redo_Should_OnlyModifyCanvasColor_When_OnlyColorCh
void ModifyCanvasCommandTest::Undo_Should_RevertCanvasSizeAndColor_When_SizeAndColorChanged()
{
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
QPixmap image(400, 400);
annotationArea.loadImage(image);
auto originalCanvasRect = annotationArea.canvasRect();
@@ -79,7 +82,8 @@ void ModifyCanvasCommandTest::Undo_Should_RevertCanvasSizeAndColor_When_SizeAndC
void ModifyCanvasCommandTest::Undo_Should_RevertOnlyColor_When_OnlyColorChanged()
{
MockDefaultParameters parameters;
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
QPixmap image(400, 400);
annotationArea.loadImage(image);
QColor newCanvasColor(Qt::red);
diff --git a/tests/annotations/undo/PasteCommandTest.cpp b/tests/annotations/undo/PasteCommandTest.cpp
index c3ec2c0..c3a9318 100644
--- a/tests/annotations/undo/PasteCommandTest.cpp
+++ b/tests/annotations/undo/PasteCommandTest.cpp
@@ -37,11 +37,13 @@ using kImageAnnotator::AnnotationPropertiesFactory;
void PasteCommandTest::TestRedo_Should_AddPastedItemsToAnnotationAreaAtGivenPosition()
{
+ // arrange
auto offset = QPointF(10, 10);
auto position = QPointF(50, 50);
MockDefaultParameters mockParameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
AnnotationPropertiesFactory propertiesFactory(&mockParameters.config, &mockParameters.settingsProvider);
- AnnotationArea annotationArea(&mockParameters.config, &mockParameters.settingsProvider, &mockParameters.scaler, &mockParameters.zoomValueProvider);
+ AnnotationArea annotationArea(&mockParameters.config, &mockParameters.settingsProvider, scalerMock, &mockParameters.zoomValueProvider, nullptr);
AnnotationItemFactory itemFactory(&propertiesFactory, &mockParameters.settingsProvider, &mockParameters.config);
auto properties = PropertiesPtr(new AnnotationProperties(Qt::red, 1));
QLineF line(10, 10, 20, 20);
@@ -52,8 +54,10 @@ void PasteCommandTest::TestRedo_Should_AddPastedItemsToAnnotationAreaAtGivenPosi
PasteCommand pasteCommand(itemsWithOffset, position, &itemFactory, &annotationArea);
QVERIFY(dynamic_cast<AnnotationLine *>(annotationArea.items().last()) == nullptr);
+ // act
pasteCommand.redo();
+ // assert
auto lastItem = dynamic_cast<AnnotationLine *>(annotationArea.items().last());
QVERIFY(lastItem != nullptr);
QCOMPARE(lastItem->position(), position + offset);
@@ -61,11 +65,13 @@ void PasteCommandTest::TestRedo_Should_AddPastedItemsToAnnotationAreaAtGivenPosi
void PasteCommandTest::TestUndo_Should_RemovePastedItemsFromAnnotationArea()
{
+ // arrange
auto offset = QPointF(10, 10);
auto position = QPointF(50, 50);
MockDefaultParameters mockParameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
AnnotationPropertiesFactory propertiesFactory(&mockParameters.config, &mockParameters.settingsProvider);
- AnnotationArea annotationArea(&mockParameters.config, &mockParameters.settingsProvider, &mockParameters.scaler, &mockParameters.zoomValueProvider);
+ AnnotationArea annotationArea(&mockParameters.config, &mockParameters.settingsProvider, scalerMock, &mockParameters.zoomValueProvider, nullptr);
AnnotationItemFactory itemFactory(&propertiesFactory, &mockParameters.settingsProvider, &mockParameters.config);
auto properties = PropertiesPtr(new AnnotationProperties(Qt::red, 1));
QLineF line(10, 10, 20, 20);
@@ -77,8 +83,10 @@ void PasteCommandTest::TestUndo_Should_RemovePastedItemsFromAnnotationArea()
pasteCommand.redo();
QVERIFY(dynamic_cast<AnnotationLine *>(annotationArea.items().last()) != nullptr);
+ // act
pasteCommand.undo();
+ // arrange
QVERIFY(dynamic_cast<AnnotationLine *>(annotationArea.items().last()) == nullptr);
}
diff --git a/tests/annotations/undo/RotateCommandTest.cpp b/tests/annotations/undo/RotateCommandTest.cpp
index cdeeee6..db78718 100644
--- a/tests/annotations/undo/RotateCommandTest.cpp
+++ b/tests/annotations/undo/RotateCommandTest.cpp
@@ -31,7 +31,8 @@ void RotateCommandTest::Redo_Should_RotatePixmapByProvidedAngel()
QGraphicsPixmapItem image(pixmap);
MockDefaultParameters defaultParameters;
- AnnotationArea annotationArea(&defaultParameters.config, &defaultParameters.settingsProvider, &defaultParameters.scaler, &defaultParameters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&defaultParameters.config, &defaultParameters.settingsProvider, scalerMock, &defaultParameters.zoomValueProvider, nullptr);
RotateCommand rotateCommand(&image, angel, &annotationArea);
// act
@@ -53,7 +54,8 @@ void RotateCommandTest::Redo_Should_TrimPixmapAndRemoveTransparentPart_WhenRotat
QGraphicsPixmapItem image(pixmap);
MockDefaultParameters defaultParameters;
- AnnotationArea annotationArea(&defaultParameters.config, &defaultParameters.settingsProvider, &defaultParameters.scaler, &defaultParameters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&defaultParameters.config, &defaultParameters.settingsProvider, scalerMock, &defaultParameters.zoomValueProvider, nullptr);
RotateCommand rotate1Command(&image, angel, &annotationArea);
rotate1Command.redo();
RotateCommand rotate2Command(&image, angel, &annotationArea);
@@ -75,7 +77,8 @@ void RotateCommandTest::Undo_Should_RevertBackToInitialImage()
QGraphicsPixmapItem image(pixmap);
MockDefaultParameters defaultParameters;
- AnnotationArea annotationArea(&defaultParameters.config, &defaultParameters.settingsProvider, &defaultParameters.scaler, &defaultParameters.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&defaultParameters.config, &defaultParameters.settingsProvider, scalerMock, &defaultParameters.zoomValueProvider, nullptr);
RotateCommand rotateCommand(&image, angel, &annotationArea);
rotateCommand.redo();
QVERIFY(image.pixmap().toImage() != pixmap.toImage());
diff --git a/tests/annotations/undo/ScaleCommandTest.cpp b/tests/annotations/undo/ScaleCommandTest.cpp
index 35ca238..02a4240 100644
--- a/tests/annotations/undo/ScaleCommandTest.cpp
+++ b/tests/annotations/undo/ScaleCommandTest.cpp
@@ -23,64 +23,78 @@
void ScaleCommandTest::TestRedo_Should_ScaleImageToNewSize()
{
+ // arrange
auto oldSize = QSize(500, 500);
auto newSize = QSize(250, 250);
QPixmap pixmap(oldSize);
QGraphicsPixmapItem image(pixmap);
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
ScaleCommand scaleCommand(&image, newSize, &annotationArea);
+ // act
scaleCommand.redo();
+ // assert
QCOMPARE(image.boundingRect().size().toSize(), newSize);
}
void ScaleCommandTest::TestUndo_Should_ScaleImageBackToOldSize()
{
+ // arrange
auto oldSize = QSize(500, 500);
auto newSize = QSize(250, 250);
QPixmap pixmap(oldSize);
QGraphicsPixmapItem image(pixmap);
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
ScaleCommand scaleCommand(&image, newSize, &annotationArea);
scaleCommand.redo();
QCOMPARE(image.boundingRect().size().toSize(), newSize);
+ // act
scaleCommand.undo();
+ // assert
QCOMPARE(image.boundingRect().size().toSize(), oldSize);
}
void ScaleCommandTest::TestRedo_Should_ScaleItemsBySameFactorAsImage()
{
+ // arrange
auto oldSize = QSize(500, 500);
auto newSize = QSize(250, 250);
QPixmap pixmap(oldSize);
QGraphicsPixmapItem image(pixmap);
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
auto properties = PropertiesPtr(new AnnotationProperties(Qt::red, 1));
auto rectItem = new AnnotationRect(QPointF(0, 0), properties);
rectItem->addPoint(QPointF(50, 50), false);
annotationArea.addAnnotationItem(rectItem);
ScaleCommand scaleCommand(&image, newSize, &annotationArea);
+ // act
scaleCommand.redo();
+ // assert
QCOMPARE(rectItem->boundingRect().size().toSize(), QSize(25, 25));
}
void ScaleCommandTest::TestUndo_Should_ScaleItemsBackToOriginalSize()
{
+ // arrange
auto oldSize = QSize(500, 500);
auto newSize = QSize(250, 250);
QPixmap pixmap(oldSize);
QGraphicsPixmapItem image(pixmap);
MockDefaultParameters p;
- AnnotationArea annotationArea(&p.config, &p.settingsProvider, &p.scaler, &p.zoomValueProvider);
+ auto scalerMock = new MockDevicePixelRatioScaler();
+ AnnotationArea annotationArea(&p.config, &p.settingsProvider, scalerMock, &p.zoomValueProvider, nullptr);
auto properties = PropertiesPtr(new AnnotationProperties(Qt::red, 1));
auto rectItem = new AnnotationRect(QPointF(0, 0), properties);
rectItem->addPoint(QPointF(50, 50), false);
@@ -89,8 +103,10 @@ void ScaleCommandTest::TestUndo_Should_ScaleItemsBackToOriginalSize()
scaleCommand.redo();
QCOMPARE(rectItem->boundingRect().size().toSize(), QSize(25, 25));
+ // act
scaleCommand.undo();
+ // assert
QCOMPARE(rectItem->boundingRect().size().toSize(), QSize(50, 50));
}
diff --git a/tests/gui/selection/SelectionHandlerTest.cpp b/tests/gui/selection/SelectionHandlerTest.cpp
index a834eba..eafc0fb 100644
--- a/tests/gui/selection/SelectionHandlerTest.cpp
+++ b/tests/gui/selection/SelectionHandlerTest.cpp
@@ -21,65 +21,83 @@
void SelectionHandlerTest::TestSetWidth_Should_EmitSelectionChangedSignal()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
SelectionHandler selectionHandler(selectionRestrictor);
selectionHandler.init(&annotationArea);
QSignalSpy spy(&selectionHandler, &SelectionHandler::selectionChanged);
+ // act
selectionHandler.setWidth(30);
+ // assert
QCOMPARE(spy.count(), 1);
}
void SelectionHandlerTest::TestSetHeight_Should_EmitSelectionChangedSignal()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
SelectionHandler selectionHandler(selectionRestrictor);
selectionHandler.init(&annotationArea);
QSignalSpy spy(&selectionHandler, &SelectionHandler::selectionChanged);
+ // act
selectionHandler.setHeight(30);
+ // assert
QCOMPARE(spy.count(), 1);
}
void SelectionHandlerTest::TestSetPositionX_Should_EmitSelectionChangedSignal()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
SelectionHandler selectionHandler(selectionRestrictor);
selectionHandler.init(&annotationArea);
QSignalSpy spy(&selectionHandler, &SelectionHandler::selectionChanged);
+ // act
selectionHandler.setPositionY(30);
+ // assert
QCOMPARE(spy.count(), 1);
}
void SelectionHandlerTest::TestSetPositionY_Should_EmitSelectionChangedSignal()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
SelectionHandler selectionHandler(selectionRestrictor);
selectionHandler.init(&annotationArea);
QSignalSpy spy(&selectionHandler, &SelectionHandler::selectionChanged);
+ // act
selectionHandler.setPositionX(30);
+ // assert
QCOMPARE(spy.count(), 1);
}
void SelectionHandlerTest::TestResetSelection_Should_SetSelectionToProvidedRect()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
auto sceneRect = QRectF(0, 0, 500, 500);
annotationArea.setSceneRect(sceneRect);
SelectionHandler selectionHandler(selectionRestrictor);
@@ -87,16 +105,20 @@ void SelectionHandlerTest::TestResetSelection_Should_SetSelectionToProvidedRect(
selectionHandler.setWidth(400);
QVERIFY(selectionHandler.selection() != sceneRect);
+ // act
selectionHandler.resetSelection(sceneRect, sceneRect);
+ // assert
QCOMPARE(selectionHandler.selection(), sceneRect);
}
void SelectionHandlerTest::TestIsInMotion_Should_ReturnTrue_WhenClickedOnSelection()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
auto sceneRect = QRectF(0, 0, 500, 500);
auto position = QPointF(150, 150);
annotationArea.setSceneRect(sceneRect);
@@ -105,16 +127,20 @@ void SelectionHandlerTest::TestIsInMotion_Should_ReturnTrue_WhenClickedOnSelecti
selectionHandler.resetSelection(sceneRect, sceneRect);
selectionHandler.grab(position);
+ // act
auto isInMotion = selectionHandler.isInMotion();
+ // assert
QCOMPARE(isInMotion, true);
}
void SelectionHandlerTest::TestIsInMotion_Should_ReturnTrue_WhenClickedOnHandle()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
auto sceneRect = QRectF(0, 0, 500, 500);
auto position = QPointF(2, 2);
annotationArea.setSceneRect(sceneRect);
@@ -122,16 +148,20 @@ void SelectionHandlerTest::TestIsInMotion_Should_ReturnTrue_WhenClickedOnHandle(
selectionHandler.init(&annotationArea);
selectionHandler.grab(position);
+ // act
auto isInMotion = selectionHandler.isInMotion();
+ // assert
QCOMPARE(isInMotion, true);
}
void SelectionHandlerTest::TestIsInMotion_Should_ReturnFalse_WhenClickedOutsideSelectionAndHandle()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
auto sceneRect = QRectF(0, 0, 500, 500);
auto position = QPointF(400, 400);
annotationArea.setSceneRect(sceneRect);
@@ -140,36 +170,46 @@ void SelectionHandlerTest::TestIsInMotion_Should_ReturnFalse_WhenClickedOutsideS
selectionHandler.setWidth(200);
selectionHandler.grab(position);
+ // act
auto isInMotion = selectionHandler.isInMotion();
+ // assert
QCOMPARE(isInMotion, false);
}
void SelectionHandlerTest::TestSelectionHandles_Should_ReturnEightItems()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
SelectionHandler selectionHandler(selectionRestrictor);
selectionHandler.init(&annotationArea);
+ // act
auto handles = selectionHandler.selectionHandles();
+ // assert
QCOMPARE(handles.length(), 8);
}
void SelectionHandlerTest::TestRestrictResize_Should_KeepCurrentSelection_When_NewSelectionHasNegativeWidthAndRestrictionDisabled()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
SelectionHandler selectionHandler(selectionRestrictor);
selectionHandler.init(&annotationArea);
selectionHandler.setRestrictionEnabled(false);
auto selectionBefore = selectionHandler.selection();
+ // act
selectionHandler.setWidth(-30);
+ // assert
auto selectionAfter = selectionHandler.selection();
QCOMPARE(selectionBefore, selectionAfter);
QVERIFY(selectionAfter.width() >= 0);
@@ -177,16 +217,20 @@ void SelectionHandlerTest::TestRestrictResize_Should_KeepCurrentSelection_When_N
void SelectionHandlerTest::TestRestrictResize_Should_KeepCurrentSelection_When_NewSelectionHasNegativeHeightAndRestrictionDisabled()
{
+ // arrange
MockDefaultParameters parameters;
+ auto scalerMock = new MockDevicePixelRatioScaler();
auto selectionRestrictor = new MockSelectionRestrictor();
- AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, ¶meters.scaler, ¶meters.zoomValueProvider);
+ AnnotationArea annotationArea(¶meters.config, ¶meters.settingsProvider, scalerMock, ¶meters.zoomValueProvider, nullptr);
SelectionHandler selectionHandler(selectionRestrictor);
selectionHandler.init(&annotationArea);
selectionHandler.setRestrictionEnabled(false);
auto selectionBefore = selectionHandler.selection();
+ // act
selectionHandler.setHeight(-30);
+ // assert
auto selectionAfter = selectionHandler.selection();
QCOMPARE(selectionBefore, selectionAfter);
QVERIFY(selectionAfter.height() >= 0.0);
diff --git a/tests/mocks/MockDefaultParameters.h b/tests/mocks/MockDefaultParameters.h
index 19faae5..11dad00 100644
--- a/tests/mocks/MockDefaultParameters.h
+++ b/tests/mocks/MockDefaultParameters.h
@@ -32,7 +32,6 @@ struct MockDefaultParameters
{
Config config;
MockSettingsProvider settingsProvider;
- MockDevicePixelRatioScaler scaler;
MockZoomValueProvider zoomValueProvider;
};
diff --git a/tests/mocks/MockDevicePixelRatioScaler.h b/tests/mocks/MockDevicePixelRatioScaler.h
index 74bb2c5..9549c70 100644
--- a/tests/mocks/MockDevicePixelRatioScaler.h
+++ b/tests/mocks/MockDevicePixelRatioScaler.h
@@ -30,7 +30,7 @@ class MockDevicePixelRatioScaler : public IDevicePixelRatioScaler
{
public:
MockDevicePixelRatioScaler();
- ~MockDevicePixelRatioScaler() = default;
+ ~MockDevicePixelRatioScaler() override = default;
QRectF scale(const QRectF &rect) const override;
qreal scaleFactor() const override;
diff --git a/translations/CMakeLists.txt b/translations/CMakeLists.txt
index 0bd039b..b720d90 100644
--- a/translations/CMakeLists.txt
+++ b/translations/CMakeLists.txt
@@ -20,7 +20,9 @@ set(KIMAGEANNOTATOR_LANG_TS
kImageAnnotator_pl.ts
kImageAnnotator_pt.ts
kImageAnnotator_pt_BR.ts
+ kImageAnnotator_ro.ts
kImageAnnotator_ru.ts
+ kImageAnnotator_si.ts
kImageAnnotator_sv.ts
kImageAnnotator_tr.ts
kImageAnnotator_uk.ts
diff --git a/translations/kImageAnnotator_de.ts b/translations/kImageAnnotator_de.ts
index 7f97f5d..43ae2ac 100644
--- a/translations/kImageAnnotator_de.ts
+++ b/translations/kImageAnnotator_de.ts
@@ -9,19 +9,19 @@
</message>
<message>
<source>Bring to Front</source>
- <translation>Nach vorne bringen</translation>
+ <translation>Ganz nach vorn</translation>
</message>
<message>
<source>Bring Forward</source>
- <translation>Nach vorne bringen</translation>
+ <translation>Nach vorn</translation>
</message>
<message>
<source>Send Backward</source>
- <translation>Nach hinten schicken</translation>
+ <translation>Nach hinten</translation>
</message>
<message>
<source>Send to Back</source>
- <translation>Nach hinten schicken</translation>
+ <translation>Ganz nach hinten</translation>
</message>
<message>
<source>Select This</source>
@@ -48,45 +48,45 @@
<name>kImageAnnotator::AnnotationGeneralSettings</name>
<message>
<source>General Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Allgemeine Einstellungen</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationImageSettings</name>
<message>
<source>Image Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Bild Einstellungen</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationItemSettings</name>
<message>
<source>Color</source>
- <translation type="unfinished">Farbe</translation>
+ <translation>Farbe</translation>
</message>
<message>
<source>Text Color</source>
- <translation type="unfinished">Textfarbe</translation>
+ <translation>Textfarbe</translation>
</message>
<message>
<source>Width</source>
- <translation type="unfinished">Breite</translation>
+ <translation>Breite</translation>
</message>
<message>
<source>Number Seed</source>
- <translation type="unfinished">Nummerieren</translation>
+ <translation>Nummerierung ab</translation>
</message>
<message>
<source>Obfuscation Factor</source>
- <translation type="unfinished">Obfuskierungs-Faktor</translation>
+ <translation>Unschärfe Faktor</translation>
</message>
<message>
<source>Item Shadow</source>
- <translation type="unfinished"></translation>
+ <translation>Objekt-Schatten</translation>
</message>
<message>
<source>Item Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Objekt-Einstellungen</translation>
</message>
</context>
<context>
@@ -101,7 +101,7 @@
</message>
<message>
<source>Close All</source>
- <translation>Alles schließen</translation>
+ <translation>Alle schließen</translation>
</message>
<message>
<source>Close All to the Left</source>
@@ -116,18 +116,18 @@
<name>kImageAnnotator::AnnotationToolSelection</name>
<message>
<source>Tool Selection</source>
- <translation type="unfinished"></translation>
+ <translation>Werkzeugauswahl</translation>
</message>
</context>
<context>
<name>kImageAnnotator::BoolPicker</name>
<message>
<source>Enabled</source>
- <translation type="unfinished"></translation>
+ <translation>Aktiviert</translation>
</message>
<message>
<source>Disabled</source>
- <translation type="unfinished"></translation>
+ <translation>Deaktiviert</translation>
</message>
</context>
<context>
@@ -154,7 +154,7 @@
</message>
<message>
<source>Apply</source>
- <translation type="unfinished">Anwenden</translation>
+ <translation>Anwenden</translation>
</message>
</context>
<context>
@@ -180,26 +180,26 @@
<name>kImageAnnotator::FontPicker</name>
<message>
<source>Font Size</source>
- <translation type="unfinished">Schriftgröße</translation>
+ <translation>Schriftgröße</translation>
</message>
<message>
<source>Bold</source>
- <translation type="unfinished"></translation>
+ <translation>Fett</translation>
</message>
<message>
<source>Italic</source>
- <translation type="unfinished"></translation>
+ <translation>Kursiv</translation>
</message>
<message>
<source>Underline</source>
- <translation type="unfinished"></translation>
+ <translation>Unterstrichen</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ImageEffectPicker</name>
<message>
<source>Image Effects</source>
- <translation>Bildeffekte</translation>
+ <translation>Bild-Effekte</translation>
</message>
<message>
<source>No Effect</source>
@@ -219,7 +219,7 @@
</message>
<message>
<source>Invert Color</source>
- <translation type="unfinished"></translation>
+ <translation>Farbe invertieren</translation>
</message>
</context>
<context>
@@ -264,7 +264,7 @@ Zeichenfläche das Hintergrundbild beinhaltet.</translation>
</message>
<message>
<source>Canvas Background Color</source>
- <translation type="unfinished"></translation>
+ <translation>Hintergrundfarbe der Zeichenfläche</translation>
</message>
</context>
<context>
@@ -279,20 +279,21 @@ Zeichenfläche das Hintergrundbild beinhaltet.</translation>
</message>
<message>
<source>90° Clockwise</source>
- <translation>90° im UZS</translation>
+ <translation>90° im Uhrzeigersinn</translation>
</message>
<message>
<source>90° Counter Clockwise</source>
- <translation>90° gegen UZS</translation>
+ <translation>90° gegen den Uhrzeigersinn</translation>
</message>
<message>
<source>Arbitrary</source>
- <translation type="unfinished"></translation>
+ <translation>Beliebig</translation>
</message>
<message>
<source>Positive values rotate clockwise, negative values counter clockwise.
Rotating by non 90° multipliers might introduce loss of quality.</source>
- <translation type="unfinished"></translation>
+ <translation>Positive Werte rotieren im Uhrzeigersinn, negative Werte gegen den Uhrzeigersinn.
+Das Drehen um nicht 90°-Multiplikatoren kann zu Qualitätsverlusten führen.</translation>
</message>
<message>
<source>Horizontal</source>
@@ -304,11 +305,11 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>OK</source>
- <translation type="unfinished">OK</translation>
+ <translation>OK</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished">Abbrechen</translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<source>Rotate</source>
@@ -316,7 +317,7 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Flip</source>
- <translation type="unfinished"></translation>
+ <translation>Umdrehen</translation>
</message>
</context>
<context>
@@ -377,15 +378,15 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Marker Rectangle</source>
- <translation>Markierungsrechteck</translation>
+ <translation>Rechteckige Markierung</translation>
</message>
<message>
<source>Marker Ellipse</source>
- <translation>Markierungsellipse</translation>
+ <translation>Ellipsen Markierung</translation>
</message>
<message>
<source>Marker Pen</source>
- <translation>Markierungsstift</translation>
+ <translation>Stift Markierung</translation>
</message>
<message>
<source>Text</source>
@@ -417,7 +418,7 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Number Pointer</source>
- <translation>Anzahlzeiger</translation>
+ <translation>Nummer mit Zeiger</translation>
</message>
<message>
<source>Sticker</source>
@@ -433,11 +434,11 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Text Arrow</source>
- <translation>Pfeil mit Text</translation>
+ <translation>Text mit Pfeil</translation>
</message>
<message>
<source>Number Arrow</source>
- <translation>Pfeil mit Zahl</translation>
+ <translation>Nummer mit Pfeil</translation>
</message>
<message>
<source>Duplicate</source>
@@ -448,15 +449,15 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
<name>kImageAnnotator::ZoomPicker</name>
<message>
<source>Zoom In (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Vergrößern (%1)</translation>
</message>
<message>
<source>Zoom Out (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Verkleinern (%1)</translation>
</message>
<message>
<source>Reset Zoom (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Zoom zurücksetzen (%1)</translation>
</message>
</context>
</TS>
diff --git a/translations/kImageAnnotator_el.ts b/translations/kImageAnnotator_el.ts
index c6e95bd..03d8b36 100644
--- a/translations/kImageAnnotator_el.ts
+++ b/translations/kImageAnnotator_el.ts
@@ -48,29 +48,29 @@
<name>kImageAnnotator::AnnotationGeneralSettings</name>
<message>
<source>General Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Γενικές ρυθμίσεις</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationImageSettings</name>
<message>
<source>Image Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Ρυθμίσεις εικόνας</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationItemSettings</name>
<message>
<source>Color</source>
- <translation type="unfinished">Χρώμα</translation>
+ <translation>Χρώμα</translation>
</message>
<message>
<source>Text Color</source>
- <translation type="unfinished">Χρώμα κειμένου</translation>
+ <translation>Χρώμα κειμένου</translation>
</message>
<message>
<source>Width</source>
- <translation type="unfinished">Πλάτος</translation>
+ <translation>Πλάτος</translation>
</message>
<message>
<source>Number Seed</source>
@@ -78,7 +78,7 @@
</message>
<message>
<source>Obfuscation Factor</source>
- <translation type="unfinished"></translation>
+ <translation>Συντελεστής θόλωσης</translation>
</message>
<message>
<source>Item Shadow</source>
@@ -93,41 +93,41 @@
<name>kImageAnnotator::AnnotationTabContextMenu</name>
<message>
<source>Close</source>
- <translation type="unfinished"></translation>
+ <translation>Κλείσιμο</translation>
</message>
<message>
<source>Close Other</source>
- <translation type="unfinished"></translation>
+ <translation>Κλείσιμο των άλλων</translation>
</message>
<message>
<source>Close All</source>
- <translation type="unfinished"></translation>
+ <translation>Κλείσιμο όλων</translation>
</message>
<message>
<source>Close All to the Left</source>
- <translation type="unfinished"></translation>
+ <translation>Κλείσιμο όλων στα αριστερά</translation>
</message>
<message>
<source>Close All to the Right</source>
- <translation type="unfinished"></translation>
+ <translation>Κλείσιμο όλων στα δεξιά</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationToolSelection</name>
<message>
<source>Tool Selection</source>
- <translation type="unfinished"></translation>
+ <translation>Επιλογή εργαλείου</translation>
</message>
</context>
<context>
<name>kImageAnnotator::BoolPicker</name>
<message>
<source>Enabled</source>
- <translation type="unfinished"></translation>
+ <translation>Ενεργοποιημένο</translation>
</message>
<message>
<source>Disabled</source>
- <translation type="unfinished"></translation>
+ <translation>Απενεργοποιημένο</translation>
</message>
</context>
<context>
@@ -154,56 +154,56 @@
</message>
<message>
<source>Apply</source>
- <translation type="unfinished"></translation>
+ <translation>Εφαρμογή</translation>
</message>
</context>
<context>
<name>kImageAnnotator::FillModePicker</name>
<message>
<source>Border And Fill Visibility</source>
- <translation type="unfinished">Ορατότητα περιγράμματος και γέμισης</translation>
+ <translation>Ορατότητα περιγράμματος και γέμισης</translation>
</message>
<message>
<source>Border and Fill</source>
- <translation type="unfinished">Περίγραμμα και γέμιση</translation>
+ <translation>Περίγραμμα και γέμιση</translation>
</message>
<message>
<source>Border and No Fill</source>
- <translation type="unfinished">Περίγραμμα χωρίς γέμιση</translation>
+ <translation>Περίγραμμα χωρίς γέμιση</translation>
</message>
<message>
<source>No Border and No Fill</source>
- <translation type="unfinished">Χωρίς περίγραμμα και χωρίς γέμιση</translation>
+ <translation>Χωρίς περίγραμμα και χωρίς γέμιση</translation>
</message>
</context>
<context>
<name>kImageAnnotator::FontPicker</name>
<message>
<source>Font Size</source>
- <translation type="unfinished">Μέγεθος γραμματοσειράς</translation>
+ <translation>Μέγεθος γραμματοσειράς</translation>
</message>
<message>
<source>Bold</source>
- <translation type="unfinished"></translation>
+ <translation>Έντονα</translation>
</message>
<message>
<source>Italic</source>
- <translation type="unfinished"></translation>
+ <translation>Πλάγια</translation>
</message>
<message>
<source>Underline</source>
- <translation type="unfinished"></translation>
+ <translation>Υπογράμμιση</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ImageEffectPicker</name>
<message>
<source>Image Effects</source>
- <translation type="unfinished"></translation>
+ <translation>Τεχνάσματα εικόνας</translation>
</message>
<message>
<source>No Effect</source>
- <translation type="unfinished"></translation>
+ <translation>Κανένα τέχνασμα</translation>
</message>
<message>
<source>Drop Shadow</source>
@@ -211,22 +211,22 @@
</message>
<message>
<source>Grayscale</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Διαβαθμίσεις του γκρι</translation>
</message>
<message>
<source>Border</source>
- <translation type="unfinished"></translation>
+ <translation>Περίγραμμα</translation>
</message>
<message>
<source>Invert Color</source>
- <translation type="unfinished"></translation>
+ <translation>Αντιστροφή χρωμάτων</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ModifyCanvasWidget</name>
<message>
<source>Restricted</source>
- <translation type="unfinished"></translation>
+ <translation>Με περιορισμούς</translation>
</message>
<message>
<source>When enabled enforces the canvas
@@ -235,7 +235,7 @@ to include the background image.</source>
</message>
<message>
<source>X:</source>
- <translation type="unfinished">X:</translation>
+ <translation type="unfinished">x</translation>
</message>
<message>
<source>Y:</source>
@@ -243,23 +243,23 @@ to include the background image.</source>
</message>
<message>
<source>W:</source>
- <translation type="unfinished">Π:</translation>
+ <translation>Π:</translation>
</message>
<message>
<source>H:</source>
- <translation type="unfinished">Υ:</translation>
+ <translation>Υ:</translation>
</message>
<message>
<source>Apply</source>
- <translation type="unfinished"></translation>
+ <translation>Εφαρμογή</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished">Ακύρωση</translation>
+ <translation>Ακύρωση</translation>
</message>
<message>
<source>Color:</source>
- <translation type="unfinished"></translation>
+ <translation>Χρώμα:</translation>
</message>
<message>
<source>Canvas Background Color</source>
@@ -270,15 +270,15 @@ to include the background image.</source>
<name>kImageAnnotator::RotateDialog</name>
<message>
<source>Rotate Image</source>
- <translation type="unfinished"></translation>
+ <translation>Περιστροφή εικόνας</translation>
</message>
<message>
<source>180°</source>
- <translation type="unfinished"></translation>
+ <translation>180°</translation>
</message>
<message>
<source>90° Clockwise</source>
- <translation type="unfinished"></translation>
+ <translation>90° Δεξιόστροφα</translation>
</message>
<message>
<source>90° Counter Clockwise</source>
@@ -295,27 +295,27 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</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>OK</source>
- <translation type="unfinished">Εντάξει</translation>
+ <translation>Εντάξει</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>Ακύρωση</translation>
</message>
<message>
<source>Rotate</source>
- <translation type="unfinished"></translation>
+ <translation>Περιστροφή</translation>
</message>
<message>
<source>Flip</source>
- <translation type="unfinished"></translation>
+ <translation>Αναστροφή</translation>
</message>
</context>
<context>
@@ -440,22 +440,22 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Duplicate</source>
- <translation type="unfinished"></translation>
+ <translation>Δημιουργία αντιγράφου</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ZoomPicker</name>
<message>
<source>Zoom In (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Μεγέθυνση (%1)</translation>
</message>
<message>
<source>Zoom Out (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Σμίκρυνση (%1)</translation>
</message>
<message>
<source>Reset Zoom (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Επαναφορά εστίασης (%1)</translation>
</message>
</context>
</TS>
diff --git a/translations/kImageAnnotator_id.ts b/translations/kImageAnnotator_id.ts
index bc5cc50..c666bd3 100644
--- a/translations/kImageAnnotator_id.ts
+++ b/translations/kImageAnnotator_id.ts
@@ -5,457 +5,459 @@
<name>kImageAnnotator::AnnotationContextMenu</name>
<message>
<source>Arrange</source>
- <translation type="unfinished"></translation>
+ <translation>Atur</translation>
</message>
<message>
<source>Bring to Front</source>
- <translation type="unfinished"></translation>
+ <translation>Bawa ke Depan</translation>
</message>
<message>
<source>Bring Forward</source>
- <translation type="unfinished"></translation>
+ <translation>Bawa paling depan</translation>
</message>
<message>
<source>Send Backward</source>
- <translation type="unfinished"></translation>
+ <translation>Kirim paling belakang</translation>
</message>
<message>
<source>Send to Back</source>
- <translation type="unfinished"></translation>
+ <translation>Kirim ke belakang</translation>
</message>
<message>
<source>Select This</source>
- <translation type="unfinished"></translation>
+ <translation>Pilih ini</translation>
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>Salin</translation>
</message>
<message>
<source>Paste</source>
- <translation type="unfinished"></translation>
+ <translation>Tempel</translation>
</message>
<message>
<source>Edit</source>
- <translation type="unfinished"></translation>
+ <translation>Sunting</translation>
</message>
<message>
<source>Delete</source>
- <translation type="unfinished"></translation>
+ <translation>Hapus</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationGeneralSettings</name>
<message>
<source>General Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Pengaturan Umum</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationImageSettings</name>
<message>
<source>Image Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Pengaturan Gambar</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationItemSettings</name>
<message>
<source>Color</source>
- <translation type="unfinished"></translation>
+ <translation>Warna</translation>
</message>
<message>
<source>Text Color</source>
- <translation type="unfinished"></translation>
+ <translation>Warna Teks</translation>
</message>
<message>
<source>Width</source>
- <translation type="unfinished"></translation>
+ <translation>Lebar</translation>
</message>
<message>
<source>Number Seed</source>
- <translation type="unfinished"></translation>
+ <translation>Nomor Seed</translation>
</message>
<message>
<source>Obfuscation Factor</source>
- <translation type="unfinished"></translation>
+ <translation>Faktor Obfuscation</translation>
</message>
<message>
<source>Item Shadow</source>
- <translation type="unfinished"></translation>
+ <translation>Bayangan item</translation>
</message>
<message>
<source>Item Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Pengaturan item</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationTabContextMenu</name>
<message>
<source>Close</source>
- <translation type="unfinished"></translation>
+ <translation>Tutup</translation>
</message>
<message>
<source>Close Other</source>
- <translation type="unfinished"></translation>
+ <translation>Tutup lainnya</translation>
</message>
<message>
<source>Close All</source>
- <translation type="unfinished"></translation>
+ <translation>Tutup semua</translation>
</message>
<message>
<source>Close All to the Left</source>
- <translation type="unfinished"></translation>
+ <translation>Tutup semua ke kiri</translation>
</message>
<message>
<source>Close All to the Right</source>
- <translation type="unfinished"></translation>
+ <translation>Tutup semua ke kanan</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationToolSelection</name>
<message>
<source>Tool Selection</source>
- <translation type="unfinished"></translation>
+ <translation>Seleksi Alat</translation>
</message>
</context>
<context>
<name>kImageAnnotator::BoolPicker</name>
<message>
<source>Enabled</source>
- <translation type="unfinished"></translation>
+ <translation>Aktifkan</translation>
</message>
<message>
<source>Disabled</source>
- <translation type="unfinished"></translation>
+ <translation>Nonaktifkan</translation>
</message>
</context>
<context>
<name>kImageAnnotator::CropWidget</name>
<message>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>Batal</translation>
</message>
<message>
<source>X:</source>
- <translation type="unfinished"></translation>
+ <translation>X:</translation>
</message>
<message>
<source>Y:</source>
- <translation type="unfinished"></translation>
+ <translation>Y:</translation>
</message>
<message>
<source>W:</source>
- <translation type="unfinished"></translation>
+ <translation>L:</translation>
</message>
<message>
<source>H:</source>
- <translation type="unfinished"></translation>
+ <translation>T:</translation>
</message>
<message>
<source>Apply</source>
- <translation type="unfinished"></translation>
+ <translation>Terapkan</translation>
</message>
</context>
<context>
<name>kImageAnnotator::FillModePicker</name>
<message>
<source>Border And Fill Visibility</source>
- <translation type="unfinished"></translation>
+ <translation>Batas dan visibilitas isian</translation>
</message>
<message>
<source>Border and Fill</source>
- <translation type="unfinished"></translation>
+ <translation>Batas dan Isian</translation>
</message>
<message>
<source>Border and No Fill</source>
- <translation type="unfinished"></translation>
+ <translation>Batas dan Tanpa Isian</translation>
</message>
<message>
<source>No Border and No Fill</source>
- <translation type="unfinished"></translation>
+ <translation>Tanpa Batas dan Tanpa Isian</translation>
</message>
</context>
<context>
<name>kImageAnnotator::FontPicker</name>
<message>
<source>Font Size</source>
- <translation type="unfinished"></translation>
+ <translation>Ukuran font</translation>
</message>
<message>
<source>Bold</source>
- <translation type="unfinished"></translation>
+ <translation>Tebal</translation>
</message>
<message>
<source>Italic</source>
- <translation type="unfinished"></translation>
+ <translation>Miring</translation>
</message>
<message>
<source>Underline</source>
- <translation type="unfinished"></translation>
+ <translation>Garis bawah</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ImageEffectPicker</name>
<message>
<source>Image Effects</source>
- <translation type="unfinished"></translation>
+ <translation>Efek gambar</translation>
</message>
<message>
<source>No Effect</source>
- <translation type="unfinished"></translation>
+ <translation>Tanpa Efek</translation>
</message>
<message>
<source>Drop Shadow</source>
- <translation type="unfinished"></translation>
+ <translation>Bayangan Jatuh</translation>
</message>
<message>
<source>Grayscale</source>
- <translation type="unfinished"></translation>
+ <translation>Skala Abu-abu</translation>
</message>
<message>
<source>Border</source>
- <translation type="unfinished"></translation>
+ <translation>Batas</translation>
</message>
<message>
<source>Invert Color</source>
- <translation type="unfinished"></translation>
+ <translation>Balikkan Warna</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ModifyCanvasWidget</name>
<message>
<source>Restricted</source>
- <translation type="unfinished"></translation>
+ <translation>Dibatasi</translation>
</message>
<message>
<source>When enabled enforces the canvas
to include the background image.</source>
- <translation type="unfinished"></translation>
+ <translation>Saat diaktifkan akan membuat kanvas
+menyertakan gambar latar belakang.</translation>
</message>
<message>
<source>X:</source>
- <translation type="unfinished"></translation>
+ <translation>X:</translation>
</message>
<message>
<source>Y:</source>
- <translation type="unfinished"></translation>
+ <translation>Y:</translation>
</message>
<message>
<source>W:</source>
- <translation type="unfinished"></translation>
+ <translation>L:</translation>
</message>
<message>
<source>H:</source>
- <translation type="unfinished"></translation>
+ <translation>T:</translation>
</message>
<message>
<source>Apply</source>
- <translation type="unfinished"></translation>
+ <translation>Terapkan</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>Batal</translation>
</message>
<message>
<source>Color:</source>
- <translation type="unfinished"></translation>
+ <translation>Warna:</translation>
</message>
<message>
<source>Canvas Background Color</source>
- <translation type="unfinished"></translation>
+ <translation>Warna Latar Belakang Kanvas</translation>
</message>
</context>
<context>
<name>kImageAnnotator::RotateDialog</name>
<message>
<source>Rotate Image</source>
- <translation type="unfinished"></translation>
+ <translation>Putar gambar</translation>
</message>
<message>
<source>180°</source>
- <translation type="unfinished"></translation>
+ <translation>180°</translation>
</message>
<message>
<source>90° Clockwise</source>
- <translation type="unfinished"></translation>
+ <translation>90° Serarah jarum jam</translation>
</message>
<message>
<source>90° Counter Clockwise</source>
- <translation type="unfinished"></translation>
+ <translation>90° Berlawanan jarum jam</translation>
</message>
<message>
<source>Arbitrary</source>
- <translation type="unfinished"></translation>
+ <translation>Sembarang</translation>
</message>
<message>
<source>Positive values rotate clockwise, negative values counter clockwise.
Rotating by non 90° multipliers might introduce loss of quality.</source>
- <translation type="unfinished"></translation>
+ <translation>Nilai positif berputar searah jarum jam, nilai negatif berlawanan arah jarum jam.
+Memutar dengan pengganda non 90° mungkin mengurangi kualitasnya.</translation>
</message>
<message>
<source>Horizontal</source>
- <translation type="unfinished"></translation>
+ <translation>Horisontal</translation>
</message>
<message>
<source>Vertical</source>
- <translation type="unfinished"></translation>
+ <translation>Vertikal</translation>
</message>
<message>
<source>OK</source>
- <translation type="unfinished"></translation>
+ <translation>OK</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>Batal</translation>
</message>
<message>
<source>Rotate</source>
- <translation type="unfinished"></translation>
+ <translation>Putar</translation>
</message>
<message>
<source>Flip</source>
- <translation type="unfinished"></translation>
+ <translation>Balik</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ScaleDialog</name>
<message>
<source>Scale Image</source>
- <translation type="unfinished"></translation>
+ <translation>Skala gambar</translation>
</message>
<message>
<source>Keep Aspect Ratio</source>
- <translation type="unfinished"></translation>
+ <translation>Jaga Rasio Aspek</translation>
</message>
<message>
<source>Width:</source>
- <translation type="unfinished"></translation>
+ <translation>Lebar:</translation>
</message>
<message>
<source>Height:</source>
- <translation type="unfinished"></translation>
+ <translation>Tinggi:</translation>
</message>
<message>
<source>OK</source>
- <translation type="unfinished"></translation>
+ <translation>Ok</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>Batal</translation>
</message>
<message>
<source>Pixel</source>
- <translation type="unfinished"></translation>
+ <translation>Piksel</translation>
</message>
<message>
<source>Percent</source>
- <translation type="unfinished"></translation>
+ <translation>Persen</translation>
</message>
</context>
<context>
<name>kImageAnnotator::StickerPicker</name>
<message>
<source>Sticker</source>
- <translation type="unfinished"></translation>
+ <translation>Stiker</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ToolPicker</name>
<message>
<source>Select</source>
- <translation type="unfinished"></translation>
+ <translation>Pilih</translation>
</message>
<message>
<source>Pen</source>
- <translation type="unfinished"></translation>
+ <translation>Pena</translation>
</message>
<message>
<source>Number</source>
- <translation type="unfinished"></translation>
+ <translation>Nomor</translation>
</message>
<message>
<source>Marker Rectangle</source>
- <translation type="unfinished"></translation>
+ <translation>Marker Persegi Panjang</translation>
</message>
<message>
<source>Marker Ellipse</source>
- <translation type="unfinished"></translation>
+ <translation>Penanda Elips</translation>
</message>
<message>
<source>Marker Pen</source>
- <translation type="unfinished"></translation>
+ <translation>Spidol</translation>
</message>
<message>
<source>Text</source>
- <translation type="unfinished"></translation>
+ <translation>Teks</translation>
</message>
<message>
<source>Arrow</source>
- <translation type="unfinished"></translation>
+ <translation>Anak panah</translation>
</message>
<message>
<source>Double Arrow</source>
- <translation type="unfinished"></translation>
+ <translation>Panah Ganda</translation>
</message>
<message>
<source>Line</source>
- <translation type="unfinished"></translation>
+ <translation>Garis</translation>
</message>
<message>
<source>Blur</source>
- <translation type="unfinished"></translation>
+ <translation>Blur</translation>
</message>
<message>
<source>Rectangle</source>
- <translation type="unfinished"></translation>
+ <translation>Persegi</translation>
</message>
<message>
<source>Ellipse</source>
- <translation type="unfinished"></translation>
+ <translation>Elips</translation>
</message>
<message>
<source>Number Pointer</source>
- <translation type="unfinished"></translation>
+ <translation>Penunjuk Angka</translation>
</message>
<message>
<source>Sticker</source>
- <translation type="unfinished"></translation>
+ <translation>Stiker</translation>
</message>
<message>
<source>Pixelate</source>
- <translation type="unfinished"></translation>
+ <translation>Pixelate</translation>
</message>
<message>
<source>Text Pointer</source>
- <translation type="unfinished"></translation>
+ <translation>Penunjuk Teks</translation>
</message>
<message>
<source>Text Arrow</source>
- <translation type="unfinished"></translation>
+ <translation>Panah Teks</translation>
</message>
<message>
<source>Number Arrow</source>
- <translation type="unfinished"></translation>
+ <translation>Panah Angka</translation>
</message>
<message>
<source>Duplicate</source>
- <translation type="unfinished"></translation>
+ <translation>Duplikat</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ZoomPicker</name>
<message>
<source>Zoom In (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Perbesar (%1)</translation>
</message>
<message>
<source>Zoom Out (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Perkecil (%1)</translation>
</message>
<message>
<source>Reset Zoom (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Setel Ulang Zoom (%1)</translation>
</message>
</context>
</TS>
diff --git a/translations/kImageAnnotator_it.ts b/translations/kImageAnnotator_it.ts
index ef8387c..dbb0bb3 100644
--- a/translations/kImageAnnotator_it.ts
+++ b/translations/kImageAnnotator_it.ts
@@ -5,23 +5,23 @@
<name>kImageAnnotator::AnnotationContextMenu</name>
<message>
<source>Arrange</source>
- <translation type="unfinished"></translation>
+ <translation>Disponi</translation>
</message>
<message>
<source>Bring to Front</source>
- <translation type="unfinished"></translation>
+ <translation>Porta in primo piano</translation>
</message>
<message>
<source>Bring Forward</source>
- <translation type="unfinished"></translation>
+ <translation>Invia in avanti</translation>
</message>
<message>
<source>Send Backward</source>
- <translation type="unfinished"></translation>
+ <translation>Manda indietro</translation>
</message>
<message>
<source>Send to Back</source>
- <translation type="unfinished"></translation>
+ <translation>Manda indietro</translation>
</message>
<message>
<source>Select This</source>
@@ -33,7 +33,7 @@
</message>
<message>
<source>Paste</source>
- <translation type="unfinished"></translation>
+ <translation>Incolla</translation>
</message>
<message>
<source>Edit</source>
@@ -48,45 +48,45 @@
<name>kImageAnnotator::AnnotationGeneralSettings</name>
<message>
<source>General Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Impostazioni Generali</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationImageSettings</name>
<message>
<source>Image Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Impostazioni immagine</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationItemSettings</name>
<message>
<source>Color</source>
- <translation type="unfinished">Colore</translation>
+ <translation>Colore</translation>
</message>
<message>
<source>Text Color</source>
- <translation type="unfinished">Colore del testo</translation>
+ <translation>Colore del testo</translation>
</message>
<message>
<source>Width</source>
- <translation type="unfinished">Larghezza</translation>
+ <translation>Larghezza</translation>
</message>
<message>
<source>Number Seed</source>
- <translation type="unfinished"></translation>
+ <translation>Numero seme</translation>
</message>
<message>
<source>Obfuscation Factor</source>
- <translation type="unfinished"></translation>
+ <translation>Fattore di offuscamento</translation>
</message>
<message>
<source>Item Shadow</source>
- <translation type="unfinished"></translation>
+ <translation>Ombreggiatura elemento</translation>
</message>
<message>
<source>Item Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Impostazione elemento</translation>
</message>
</context>
<context>
@@ -101,33 +101,33 @@
</message>
<message>
<source>Close All</source>
- <translation type="unfinished"></translation>
+ <translation>Chiudi tutto</translation>
</message>
<message>
<source>Close All to the Left</source>
- <translation type="unfinished"></translation>
+ <translation>Chiudi tutto a sinistra</translation>
</message>
<message>
<source>Close All to the Right</source>
- <translation type="unfinished"></translation>
+ <translation>Chiudi tutto a destra</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationToolSelection</name>
<message>
<source>Tool Selection</source>
- <translation type="unfinished"></translation>
+ <translation>Selezione strumento</translation>
</message>
</context>
<context>
<name>kImageAnnotator::BoolPicker</name>
<message>
<source>Enabled</source>
- <translation type="unfinished"></translation>
+ <translation>Abilitato</translation>
</message>
<message>
<source>Disabled</source>
- <translation type="unfinished"></translation>
+ <translation>Disabilitato</translation>
</message>
</context>
<context>
@@ -154,179 +154,181 @@
</message>
<message>
<source>Apply</source>
- <translation type="unfinished"></translation>
+ <translation>Applica</translation>
</message>
</context>
<context>
<name>kImageAnnotator::FillModePicker</name>
<message>
<source>Border And Fill Visibility</source>
- <translation type="unfinished"></translation>
+ <translation>Visibilità bordo e riempimento</translation>
</message>
<message>
<source>Border and Fill</source>
- <translation type="unfinished"></translation>
+ <translation>Bordo e riempimento</translation>
</message>
<message>
<source>Border and No Fill</source>
- <translation type="unfinished"></translation>
+ <translation>Bordo e nessun riempimento</translation>
</message>
<message>
<source>No Border and No Fill</source>
- <translation type="unfinished"></translation>
+ <translation>Nessun bordo e nessun riempimento</translation>
</message>
</context>
<context>
<name>kImageAnnotator::FontPicker</name>
<message>
<source>Font Size</source>
- <translation type="unfinished">Dimensione dei caratteri</translation>
+ <translation>Dimensione caratteri</translation>
</message>
<message>
<source>Bold</source>
- <translation type="unfinished"></translation>
+ <translation>Grassetto</translation>
</message>
<message>
<source>Italic</source>
- <translation type="unfinished"></translation>
+ <translation>Corsivo</translation>
</message>
<message>
<source>Underline</source>
- <translation type="unfinished"></translation>
+ <translation>Sottolineatura</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ImageEffectPicker</name>
<message>
<source>Image Effects</source>
- <translation type="unfinished"></translation>
+ <translation>Effetti immagine</translation>
</message>
<message>
<source>No Effect</source>
- <translation type="unfinished"></translation>
+ <translation>Nessun effetto</translation>
</message>
<message>
<source>Drop Shadow</source>
- <translation type="unfinished"></translation>
+ <translation>Ombra esterna</translation>
</message>
<message>
<source>Grayscale</source>
- <translation type="unfinished"></translation>
+ <translation>Scala di grigi</translation>
</message>
<message>
<source>Border</source>
- <translation type="unfinished"></translation>
+ <translation>Bordo</translation>
</message>
<message>
<source>Invert Color</source>
- <translation type="unfinished"></translation>
+ <translation>Inverti colore</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ModifyCanvasWidget</name>
<message>
<source>Restricted</source>
- <translation type="unfinished"></translation>
+ <translation>Limitato</translation>
</message>
<message>
<source>When enabled enforces the canvas
to include the background image.</source>
- <translation type="unfinished"></translation>
+ <translation>Quando abilitato impone la tela
+per includere l'immagine di sfondo.</translation>
</message>
<message>
<source>X:</source>
- <translation type="unfinished">X:</translation>
+ <translation>X:</translation>
</message>
<message>
<source>Y:</source>
- <translation type="unfinished">Y:</translation>
+ <translation>Y:</translation>
</message>
<message>
<source>W:</source>
- <translation type="unfinished">L:</translation>
+ <translation>L:</translation>
</message>
<message>
<source>H:</source>
- <translation type="unfinished">A:</translation>
+ <translation>A:</translation>
</message>
<message>
<source>Apply</source>
- <translation type="unfinished"></translation>
+ <translation>Applica</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished">Annulla</translation>
+ <translation>Annulla</translation>
</message>
<message>
<source>Color:</source>
- <translation type="unfinished"></translation>
+ <translation>Colore:</translation>
</message>
<message>
<source>Canvas Background Color</source>
- <translation type="unfinished"></translation>
+ <translation>Colore di sfondo della tela</translation>
</message>
</context>
<context>
<name>kImageAnnotator::RotateDialog</name>
<message>
<source>Rotate Image</source>
- <translation type="unfinished"></translation>
+ <translation>Ruota immagine</translation>
</message>
<message>
<source>180°</source>
- <translation type="unfinished"></translation>
+ <translation>180°</translation>
</message>
<message>
<source>90° Clockwise</source>
- <translation type="unfinished"></translation>
+ <translation>90° in senso orario</translation>
</message>
<message>
<source>90° Counter Clockwise</source>
- <translation type="unfinished"></translation>
+ <translation>90° in senso antiorario</translation>
</message>
<message>
<source>Arbitrary</source>
- <translation type="unfinished"></translation>
+ <translation>Arbitrario</translation>
</message>
<message>
<source>Positive values rotate clockwise, negative values counter clockwise.
Rotating by non 90° multipliers might introduce loss of quality.</source>
- <translation type="unfinished"></translation>
+ <translation>I valori positivi ruotano in senso orario, i valori negativi in senso antiorario.
+La rotazione di moltiplicatori diversi da 90° potrebbe introdurre una perdita di qualità.</translation>
</message>
<message>
<source>Horizontal</source>
- <translation type="unfinished"></translation>
+ <translation>Orizzontale</translation>
</message>
<message>
<source>Vertical</source>
- <translation type="unfinished"></translation>
+ <translation>Verticale</translation>
</message>
<message>
<source>OK</source>
- <translation type="unfinished">OK</translation>
+ <translation>OK</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished">Annulla</translation>
+ <translation>Annulla</translation>
</message>
<message>
<source>Rotate</source>
- <translation type="unfinished"></translation>
+ <translation>Ruotare</translation>
</message>
<message>
<source>Flip</source>
- <translation type="unfinished"></translation>
+ <translation>Capovolgere</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ScaleDialog</name>
<message>
<source>Scale Image</source>
- <translation type="unfinished"></translation>
+ <translation>Scala immagine</translation>
</message>
<message>
<source>Keep Aspect Ratio</source>
- <translation type="unfinished"></translation>
+ <translation>Mantenere proporzioni</translation>
</message>
<message>
<source>Width:</source>
@@ -357,7 +359,7 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
<name>kImageAnnotator::StickerPicker</name>
<message>
<source>Sticker</source>
- <translation type="unfinished"></translation>
+ <translation>Adesivo</translation>
</message>
</context>
<context>
@@ -376,15 +378,15 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Marker Rectangle</source>
- <translation type="unfinished"></translation>
+ <translation>Marcatore rettangolo</translation>
</message>
<message>
<source>Marker Ellipse</source>
- <translation type="unfinished"></translation>
+ <translation>Marcatore ellisse</translation>
</message>
<message>
<source>Marker Pen</source>
- <translation type="unfinished"></translation>
+ <translation>Marcatore penna</translation>
</message>
<message>
<source>Text</source>
@@ -420,42 +422,42 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Sticker</source>
- <translation type="unfinished"></translation>
+ <translation>Adesivo</translation>
</message>
<message>
<source>Pixelate</source>
- <translation type="unfinished"></translation>
+ <translation>Pixellato</translation>
</message>
<message>
<source>Text Pointer</source>
- <translation type="unfinished"></translation>
+ <translation>Puntatore testo</translation>
</message>
<message>
<source>Text Arrow</source>
- <translation type="unfinished"></translation>
+ <translation>Freccia testo</translation>
</message>
<message>
<source>Number Arrow</source>
- <translation type="unfinished"></translation>
+ <translation>Numero freccia</translation>
</message>
<message>
<source>Duplicate</source>
- <translation type="unfinished"></translation>
+ <translation>Duplicare</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ZoomPicker</name>
<message>
<source>Zoom In (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Ingrandisci (%1)</translation>
</message>
<message>
<source>Zoom Out (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Rimpicciolisci (%1)</translation>
</message>
<message>
<source>Reset Zoom (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Reimposta zoom (%1)</translation>
</message>
</context>
</TS>
diff --git a/translations/kImageAnnotator_pt.ts b/translations/kImageAnnotator_pt.ts
index 1d9fe52..e7518cc 100644
--- a/translations/kImageAnnotator_pt.ts
+++ b/translations/kImageAnnotator_pt.ts
@@ -154,7 +154,7 @@
</message>
<message>
<source>Apply</source>
- <translation type="unfinished">Aplicar</translation>
+ <translation>Aplicar</translation>
</message>
</context>
<context>
diff --git a/translations/kImageAnnotator_pt.ts b/translations/kImageAnnotator_ro.ts
similarity index 62%
copy from translations/kImageAnnotator_pt.ts
copy to translations/kImageAnnotator_ro.ts
index 1d9fe52..c03d4fb 100644
--- a/translations/kImageAnnotator_pt.ts
+++ b/translations/kImageAnnotator_ro.ts
@@ -1,140 +1,140 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="pt_BR">
+<TS version="2.1" language="ro">
<context>
<name>kImageAnnotator::AnnotationContextMenu</name>
<message>
<source>Arrange</source>
- <translation>Organizar</translation>
+ <translation>Aranjează</translation>
</message>
<message>
<source>Bring to Front</source>
- <translation>Trazer para frente</translation>
+ <translation>Adu în față</translation>
</message>
<message>
<source>Bring Forward</source>
- <translation>Avançar um nível</translation>
+ <translation>Adu mai în față</translation>
</message>
<message>
<source>Send Backward</source>
- <translation>Recuar um nível</translation>
+ <translation>Trimite mai în spate</translation>
</message>
<message>
<source>Send to Back</source>
- <translation>Enviar para trás</translation>
+ <translation>Trimite în spate</translation>
</message>
<message>
<source>Select This</source>
- <translation>Selecione isto</translation>
+ <translation>Alege acesta</translation>
</message>
<message>
<source>Copy</source>
- <translation>Copiar</translation>
+ <translation>Copiază</translation>
</message>
<message>
<source>Paste</source>
- <translation>Colar</translation>
+ <translation>Lipește</translation>
</message>
<message>
<source>Edit</source>
- <translation>Editar</translation>
+ <translation>Modifică</translation>
</message>
<message>
<source>Delete</source>
- <translation>Apagar</translation>
+ <translation>Șterge</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationGeneralSettings</name>
<message>
<source>General Settings</source>
- <translation>Configurações Gerais</translation>
+ <translation>Configurări generale</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationImageSettings</name>
<message>
<source>Image Settings</source>
- <translation>Configurações de imagem</translation>
+ <translation>Configurări imagine</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationItemSettings</name>
<message>
<source>Color</source>
- <translation>Cor</translation>
+ <translation>Culoare</translation>
</message>
<message>
<source>Text Color</source>
- <translation>Cor do texto</translation>
+ <translation>Culoare text</translation>
</message>
<message>
<source>Width</source>
- <translation>Tamanho / Espessura da Ferramenta atual</translation>
+ <translation>Lățime</translation>
</message>
<message>
<source>Number Seed</source>
- <translation>Número</translation>
+ <translation>Sămânță numerică</translation>
</message>
<message>
<source>Obfuscation Factor</source>
- <translation>Fator de Obfuscação</translation>
+ <translation>Factor de eclipsare</translation>
</message>
<message>
<source>Item Shadow</source>
- <translation>Sombra do Item</translation>
+ <translation>Umbră element</translation>
</message>
<message>
<source>Item Settings</source>
- <translation>Configurações do item</translation>
+ <translation>Configurări element</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationTabContextMenu</name>
<message>
<source>Close</source>
- <translation>Fechar aba</translation>
+ <translation>Închide</translation>
</message>
<message>
<source>Close Other</source>
- <translation>Fechar outras abas</translation>
+ <translation>Închide celelalte</translation>
</message>
<message>
<source>Close All</source>
- <translation>Fechar todas as abas</translation>
+ <translation>Închide toate</translation>
</message>
<message>
<source>Close All to the Left</source>
- <translation>Fechar abas à esquerda</translation>
+ <translation>Închide toate la stânga</translation>
</message>
<message>
<source>Close All to the Right</source>
- <translation>Fechar abas à direita</translation>
+ <translation>Închide toate la dreapta</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationToolSelection</name>
<message>
<source>Tool Selection</source>
- <translation>Seleção de ferramentas</translation>
+ <translation>Alegere unealtă</translation>
</message>
</context>
<context>
<name>kImageAnnotator::BoolPicker</name>
<message>
<source>Enabled</source>
- <translation>Ativado</translation>
+ <translation>Activat</translation>
</message>
<message>
<source>Disabled</source>
- <translation>Desativado</translation>
+ <translation>Dezactivat</translation>
</message>
</context>
<context>
<name>kImageAnnotator::CropWidget</name>
<message>
<source>Cancel</source>
- <translation>Cancelar</translation>
+ <translation>Renunță</translation>
</message>
<message>
<source>X:</source>
@@ -146,93 +146,93 @@
</message>
<message>
<source>W:</source>
- <translation>Largura:</translation>
+ <translation>L:</translation>
</message>
<message>
<source>H:</source>
- <translation>Altura:</translation>
+ <translation>Î:</translation>
</message>
<message>
<source>Apply</source>
- <translation type="unfinished">Aplicar</translation>
+ <translation>Aplică</translation>
</message>
</context>
<context>
<name>kImageAnnotator::FillModePicker</name>
<message>
<source>Border And Fill Visibility</source>
- <translation>Exibição de borda e preenchimento</translation>
+ <translation>Vizibilitate contur și umplere</translation>
</message>
<message>
<source>Border and Fill</source>
- <translation>Com borda e com preenchimento</translation>
+ <translation>Contur și umplere</translation>
</message>
<message>
<source>Border and No Fill</source>
- <translation>Com borda e sem preenchimento</translation>
+ <translation>Contur fără umplere</translation>
</message>
<message>
<source>No Border and No Fill</source>
- <translation>Sem borda e sem preenchimento</translation>
+ <translation>Fără contur și fără umplere</translation>
</message>
</context>
<context>
<name>kImageAnnotator::FontPicker</name>
<message>
<source>Font Size</source>
- <translation>Tamanho da fonte</translation>
+ <translation>Dimensiune font</translation>
</message>
<message>
<source>Bold</source>
- <translation>Negrito</translation>
+ <translation>Aldin</translation>
</message>
<message>
<source>Italic</source>
- <translation>Itálico</translation>
+ <translation>Cursiv</translation>
</message>
<message>
<source>Underline</source>
- <translation>Sublinhado</translation>
+ <translation>Subliniat</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ImageEffectPicker</name>
<message>
<source>Image Effects</source>
- <translation>Efeitos da imagem</translation>
+ <translation>Efecte imagine</translation>
</message>
<message>
<source>No Effect</source>
- <translation>Sem efeito</translation>
+ <translation>Fără efect</translation>
</message>
<message>
<source>Drop Shadow</source>
- <translation>Sombreado</translation>
+ <translation>Lasă umbră</translation>
</message>
<message>
<source>Grayscale</source>
- <translation>Escala de cinza</translation>
+ <translation>Nuanțe de gri</translation>
</message>
<message>
<source>Border</source>
- <translation>Borda</translation>
+ <translation>Contur</translation>
</message>
<message>
<source>Invert Color</source>
- <translation>Inverter cor</translation>
+ <translation>Inversează culoarea</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ModifyCanvasWidget</name>
<message>
<source>Restricted</source>
- <translation>RestritO</translation>
+ <translation>Restricționat</translation>
</message>
<message>
<source>When enabled enforces the canvas
to include the background image.</source>
- <translation>Quando ativado, impõe a tela
-para incluir a imagem de fundo.</translation>
+ <translation>La activare forțează canavaua
+să includă imaginea de fundal.</translation>
</message>
<message>
<source>X:</source>
@@ -244,60 +244,60 @@ para incluir a imagem de fundo.</translation>
</message>
<message>
<source>W:</source>
- <translation>Largura:</translation>
+ <translation>L:</translation>
</message>
<message>
<source>H:</source>
- <translation>Altura:</translation>
+ <translation>Î:</translation>
</message>
<message>
<source>Apply</source>
- <translation>Aplicar</translation>
+ <translation>Aplică</translation>
</message>
<message>
<source>Cancel</source>
- <translation>Cancelar</translation>
+ <translation>Renunță</translation>
</message>
<message>
<source>Color:</source>
- <translation>Cor:</translation>
+ <translation>Culoare:</translation>
</message>
<message>
<source>Canvas Background Color</source>
- <translation>Cor de fundo da tela</translation>
+ <translation>Culoare fundal canava</translation>
</message>
</context>
<context>
<name>kImageAnnotator::RotateDialog</name>
<message>
<source>Rotate Image</source>
- <translation>Rotacionar Imagem</translation>
+ <translation>Rotește imaginea</translation>
</message>
<message>
<source>180°</source>
- <translation>180º</translation>
+ <translation>180°</translation>
</message>
<message>
<source>90° Clockwise</source>
- <translation>90° no sentido horário</translation>
+ <translation>90° în sensul acelor de ceasornic</translation>
</message>
<message>
<source>90° Counter Clockwise</source>
- <translation>90° no sentido anti-horário</translation>
+ <translation>90° în sens contrar acelor de ceasornic</translation>
</message>
<message>
<source>Arbitrary</source>
- <translation>Arbitrário</translation>
+ <translation>Arbitrar</translation>
</message>
<message>
<source>Positive values rotate clockwise, negative values counter clockwise.
Rotating by non 90° multipliers might introduce loss of quality.</source>
- <translation>Os valores positivos giram no sentido horário, os valores negativos no sentido anti-horário.
-Rotacionar por multiplicadores diferentes de 90° pode causar perda de qualidade.</translation>
+ <translation>Valorile pozitive rotesc în sensul acelor de ceasornic, cele negative – în sens contrar.
+Rotirea cu non-multiplu de 90° poate introduce pierderi de calitate.</translation>
</message>
<message>
<source>Horizontal</source>
- <translation>Horizontal</translation>
+ <translation>Orizontal</translation>
</message>
<message>
<source>Vertical</source>
@@ -305,46 +305,46 @@ Rotacionar por multiplicadores diferentes de 90° pode causar perda de qualidade
</message>
<message>
<source>OK</source>
- <translation>OK</translation>
+ <translation>Bine</translation>
</message>
<message>
<source>Cancel</source>
- <translation>Cancelar</translation>
+ <translation>Renunță</translation>
</message>
<message>
<source>Rotate</source>
- <translation>Rotacionar</translation>
+ <translation>Rotește</translation>
</message>
<message>
<source>Flip</source>
- <translation>Girar - Inverter</translation>
+ <translation>Răstoarnă</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ScaleDialog</name>
<message>
<source>Scale Image</source>
- <translation>Redimensionar imagem</translation>
+ <translation>Scalează imaginea</translation>
</message>
<message>
<source>Keep Aspect Ratio</source>
- <translation>Manter proporção</translation>
+ <translation>Păstrează raportul de aspect</translation>
</message>
<message>
<source>Width:</source>
- <translation>Largura:</translation>
+ <translation>Lățime:</translation>
</message>
<message>
<source>Height:</source>
- <translation>Altura:</translation>
+ <translation>Înălțime:</translation>
</message>
<message>
<source>OK</source>
- <translation>OK</translation>
+ <translation>Bine</translation>
</message>
<message>
<source>Cancel</source>
- <translation>Cancelar</translation>
+ <translation>Renunță</translation>
</message>
<message>
<source>Pixel</source>
@@ -352,112 +352,112 @@ Rotacionar por multiplicadores diferentes de 90° pode causar perda de qualidade
</message>
<message>
<source>Percent</source>
- <translation>Percentagem</translation>
+ <translation>Procent</translation>
</message>
</context>
<context>
<name>kImageAnnotator::StickerPicker</name>
<message>
<source>Sticker</source>
- <translation>Adesivo</translation>
+ <translation>Autocolant</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ToolPicker</name>
<message>
<source>Select</source>
- <translation>Seleção</translation>
+ <translation>Alege</translation>
</message>
<message>
<source>Pen</source>
- <translation>Caneta</translation>
+ <translation>Stilou</translation>
</message>
<message>
<source>Number</source>
- <translation>Número</translation>
+ <translation>Număr</translation>
</message>
<message>
<source>Marker Rectangle</source>
- <translation>Marcador Retangular</translation>
+ <translation>Dreptunghi marcator</translation>
</message>
<message>
<source>Marker Ellipse</source>
- <translation>Marcador Elíptico</translation>
+ <translation>Elipsă marcatoare</translation>
</message>
<message>
<source>Marker Pen</source>
- <translation>Caneta Marcadora</translation>
+ <translation>Stilou marcator</translation>
</message>
<message>
<source>Text</source>
- <translation>Texto</translation>
+ <translation>Text</translation>
</message>
<message>
<source>Arrow</source>
- <translation>Seta</translation>
+ <translation>Săgeată</translation>
</message>
<message>
<source>Double Arrow</source>
- <translation>Seta Dupla</translation>
+ <translation>Săgeată dublă</translation>
</message>
<message>
<source>Line</source>
- <translation>Linha</translation>
+ <translation>Linie</translation>
</message>
<message>
<source>Blur</source>
- <translation>Ofuscar</translation>
+ <translation>Estompare</translation>
</message>
<message>
<source>Rectangle</source>
- <translation>Retângulo</translation>
+ <translation>Dreptunghi</translation>
</message>
<message>
<source>Ellipse</source>
- <translation>Elipse</translation>
+ <translation>Elipsă</translation>
</message>
<message>
<source>Number Pointer</source>
- <translation>Número com ponteiro</translation>
+ <translation>Indicator numeric</translation>
</message>
<message>
<source>Sticker</source>
- <translation>Adesivo</translation>
+ <translation>Autocolant</translation>
</message>
<message>
<source>Pixelate</source>
- <translation>Pixelar</translation>
+ <translation>Pixelează</translation>
</message>
<message>
<source>Text Pointer</source>
- <translation>Texto com ponteiro</translation>
+ <translation>Indicator textual</translation>
</message>
<message>
<source>Text Arrow</source>
- <translation>Texto com seta</translation>
+ <translation>Săgeată textuală</translation>
</message>
<message>
<source>Number Arrow</source>
- <translation>Número com seta</translation>
+ <translation>Săgeată numerică</translation>
</message>
<message>
<source>Duplicate</source>
- <translation>Duplicar</translation>
+ <translation>Duplică</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ZoomPicker</name>
<message>
<source>Zoom In (%1)</source>
- <translation>Zoom + (%1)</translation>
+ <translation>Apropie (%1)</translation>
</message>
<message>
<source>Zoom Out (%1)</source>
- <translation>Zoom - (%1)</translation>
+ <translation>Îndepărtează (%1)</translation>
</message>
<message>
<source>Reset Zoom (%1)</source>
- <translation>Redefinir Zoom (%1)</translation>
+ <translation>Reinițializează apropierea (%1)</translation>
</message>
</context>
</TS>
diff --git a/translations/kImageAnnotator_id.ts b/translations/kImageAnnotator_si.ts
similarity index 87%
copy from translations/kImageAnnotator_id.ts
copy to translations/kImageAnnotator_si.ts
index bc5cc50..ae7f986 100644
--- a/translations/kImageAnnotator_id.ts
+++ b/translations/kImageAnnotator_si.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="id_ID">
+<TS version="2.1" language="si">
<context>
<name>kImageAnnotator::AnnotationContextMenu</name>
<message>
@@ -29,15 +29,15 @@
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>පිටපත්</translation>
</message>
<message>
<source>Paste</source>
- <translation type="unfinished"></translation>
+ <translation>අලවන්න</translation>
</message>
<message>
<source>Edit</source>
- <translation type="unfinished"></translation>
+ <translation>සංස්කරණය</translation>
</message>
<message>
<source>Delete</source>
@@ -62,7 +62,7 @@
<name>kImageAnnotator::AnnotationItemSettings</name>
<message>
<source>Color</source>
- <translation type="unfinished"></translation>
+ <translation>වර්ණය</translation>
</message>
<message>
<source>Text Color</source>
@@ -70,7 +70,7 @@
</message>
<message>
<source>Width</source>
- <translation type="unfinished"></translation>
+ <translation>පළල</translation>
</message>
<message>
<source>Number Seed</source>
@@ -93,15 +93,15 @@
<name>kImageAnnotator::AnnotationTabContextMenu</name>
<message>
<source>Close</source>
- <translation type="unfinished"></translation>
+ <translation>වසන්න</translation>
</message>
<message>
<source>Close Other</source>
- <translation type="unfinished"></translation>
+ <translation>අනෙක්වා වසන්න</translation>
</message>
<message>
<source>Close All</source>
- <translation type="unfinished"></translation>
+ <translation>සියල්ල වසන්න</translation>
</message>
<message>
<source>Close All to the Left</source>
@@ -116,25 +116,25 @@
<name>kImageAnnotator::AnnotationToolSelection</name>
<message>
<source>Tool Selection</source>
- <translation type="unfinished"></translation>
+ <translation>මෙවලම් තේරීම</translation>
</message>
</context>
<context>
<name>kImageAnnotator::BoolPicker</name>
<message>
<source>Enabled</source>
- <translation type="unfinished"></translation>
+ <translation>සබල කර ඇත</translation>
</message>
<message>
<source>Disabled</source>
- <translation type="unfinished"></translation>
+ <translation>අබල කර ඇත</translation>
</message>
</context>
<context>
<name>kImageAnnotator::CropWidget</name>
<message>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>අවලංගු</translation>
</message>
<message>
<source>X:</source>
@@ -154,7 +154,7 @@
</message>
<message>
<source>Apply</source>
- <translation type="unfinished"></translation>
+ <translation>යොදන්න</translation>
</message>
</context>
<context>
@@ -251,15 +251,15 @@ to include the background image.</source>
</message>
<message>
<source>Apply</source>
- <translation type="unfinished"></translation>
+ <translation>යොදන්න</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>අවලංගු</translation>
</message>
<message>
<source>Color:</source>
- <translation type="unfinished"></translation>
+ <translation>වර්ණය:</translation>
</message>
<message>
<source>Canvas Background Color</source>
@@ -274,7 +274,7 @@ to include the background image.</source>
</message>
<message>
<source>180°</source>
- <translation type="unfinished"></translation>
+ <translation>180°</translation>
</message>
<message>
<source>90° Clockwise</source>
@@ -303,11 +303,11 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>OK</source>
- <translation type="unfinished"></translation>
+ <translation>හරි</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>අවලංගු</translation>
</message>
<message>
<source>Rotate</source>
@@ -330,19 +330,19 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Width:</source>
- <translation type="unfinished"></translation>
+ <translation>පළල:</translation>
</message>
<message>
<source>Height:</source>
- <translation type="unfinished"></translation>
+ <translation>උස:</translation>
</message>
<message>
<source>OK</source>
- <translation type="unfinished"></translation>
+ <translation>හරි</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>අවලංගු</translation>
</message>
<message>
<source>Pixel</source>
@@ -364,7 +364,7 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
<name>kImageAnnotator::ToolPicker</name>
<message>
<source>Select</source>
- <translation type="unfinished"></translation>
+ <translation>තෝරන්න</translation>
</message>
<message>
<source>Pen</source>
@@ -372,7 +372,7 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Number</source>
- <translation type="unfinished"></translation>
+ <translation>අංකය</translation>
</message>
<message>
<source>Marker Rectangle</source>
@@ -392,11 +392,11 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Arrow</source>
- <translation type="unfinished"></translation>
+ <translation>ඊතලය</translation>
</message>
<message>
<source>Double Arrow</source>
- <translation type="unfinished"></translation>
+ <translation>ද්විත්ව ඊතලය</translation>
</message>
<message>
<source>Line</source>
@@ -436,22 +436,22 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Number Arrow</source>
- <translation type="unfinished"></translation>
+ <translation>අංක ඊතලය</translation>
</message>
<message>
<source>Duplicate</source>
- <translation type="unfinished"></translation>
+ <translation>අනුපිටපත</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ZoomPicker</name>
<message>
<source>Zoom In (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>විශාලනය (% 1)</translation>
</message>
<message>
<source>Zoom Out (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>කුඩාලනය (% 1)</translation>
</message>
<message>
<source>Reset Zoom (%1)</source>
diff --git a/translations/kImageAnnotator_zh_CN.ts b/translations/kImageAnnotator_zh_CN.ts
index 9054ff9..668c514 100644
--- a/translations/kImageAnnotator_zh_CN.ts
+++ b/translations/kImageAnnotator_zh_CN.ts
@@ -48,45 +48,45 @@
<name>kImageAnnotator::AnnotationGeneralSettings</name>
<message>
<source>General Settings</source>
- <translation type="unfinished"></translation>
+ <translation>通用设置</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationImageSettings</name>
<message>
<source>Image Settings</source>
- <translation type="unfinished"></translation>
+ <translation>图像设置</translation>
</message>
</context>
<context>
<name>kImageAnnotator::AnnotationItemSettings</name>
<message>
<source>Color</source>
- <translation type="unfinished">颜色</translation>
+ <translation>颜色</translation>
</message>
<message>
<source>Text Color</source>
- <translation type="unfinished">文本颜色</translation>
+ <translation>文本颜色</translation>
</message>
<message>
<source>Width</source>
- <translation type="unfinished">宽度</translation>
+ <translation>宽度</translation>
</message>
<message>
<source>Number Seed</source>
- <translation type="unfinished"></translation>
+ <translation>当前数字</translation>
</message>
<message>
<source>Obfuscation Factor</source>
- <translation type="unfinished">模糊系数</translation>
+ <translation>模糊系数</translation>
</message>
<message>
<source>Item Shadow</source>
- <translation type="unfinished"></translation>
+ <translation>项影</translation>
</message>
<message>
<source>Item Settings</source>
- <translation type="unfinished"></translation>
+ <translation>元素设置</translation>
</message>
</context>
<context>
@@ -116,18 +116,18 @@
<name>kImageAnnotator::AnnotationToolSelection</name>
<message>
<source>Tool Selection</source>
- <translation type="unfinished"></translation>
+ <translation>工具选择</translation>
</message>
</context>
<context>
<name>kImageAnnotator::BoolPicker</name>
<message>
<source>Enabled</source>
- <translation type="unfinished"></translation>
+ <translation>开启</translation>
</message>
<message>
<source>Disabled</source>
- <translation type="unfinished"></translation>
+ <translation>关闭</translation>
</message>
</context>
<context>
@@ -154,7 +154,7 @@
</message>
<message>
<source>Apply</source>
- <translation type="unfinished"></translation>
+ <translation>应用</translation>
</message>
</context>
<context>
@@ -180,19 +180,19 @@
<name>kImageAnnotator::FontPicker</name>
<message>
<source>Font Size</source>
- <translation type="unfinished">字体大小</translation>
+ <translation>字体大小</translation>
</message>
<message>
<source>Bold</source>
- <translation type="unfinished"></translation>
+ <translation>粗体</translation>
</message>
<message>
<source>Italic</source>
- <translation type="unfinished"></translation>
+ <translation>斜体</translation>
</message>
<message>
<source>Underline</source>
- <translation type="unfinished"></translation>
+ <translation>下划线</translation>
</message>
</context>
<context>
@@ -219,7 +219,7 @@
</message>
<message>
<source>Invert Color</source>
- <translation type="unfinished"></translation>
+ <translation>反转色</translation>
</message>
</context>
<context>
@@ -235,54 +235,54 @@ to include the background image.</source>
</message>
<message>
<source>X:</source>
- <translation type="unfinished">X:</translation>
+ <translation>X:</translation>
</message>
<message>
<source>Y:</source>
- <translation type="unfinished">Y:</translation>
+ <translation>Y:</translation>
</message>
<message>
<source>W:</source>
- <translation type="unfinished">宽度:</translation>
+ <translation>宽度:</translation>
</message>
<message>
<source>H:</source>
- <translation type="unfinished">高度:</translation>
+ <translation>高度:</translation>
</message>
<message>
<source>Apply</source>
- <translation type="unfinished"></translation>
+ <translation>应用</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished">取消</translation>
+ <translation>取消</translation>
</message>
<message>
<source>Color:</source>
- <translation type="unfinished"></translation>
+ <translation>颜色:</translation>
</message>
<message>
<source>Canvas Background Color</source>
- <translation type="unfinished"></translation>
+ <translation>画布背景色</translation>
</message>
</context>
<context>
<name>kImageAnnotator::RotateDialog</name>
<message>
<source>Rotate Image</source>
- <translation type="unfinished"></translation>
+ <translation>旋转图片</translation>
</message>
<message>
<source>180°</source>
- <translation type="unfinished"></translation>
+ <translation>180°</translation>
</message>
<message>
<source>90° Clockwise</source>
- <translation type="unfinished"></translation>
+ <translation>顺时针旋转90°</translation>
</message>
<message>
<source>90° Counter Clockwise</source>
- <translation type="unfinished"></translation>
+ <translation>逆时针旋转90°</translation>
</message>
<message>
<source>Arbitrary</source>
@@ -295,27 +295,27 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</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>OK</source>
- <translation type="unfinished">确定</translation>
+ <translation>确定</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished">取消</translation>
+ <translation>取消</translation>
</message>
<message>
<source>Rotate</source>
- <translation type="unfinished"></translation>
+ <translation>旋转</translation>
</message>
<message>
<source>Flip</source>
- <translation type="unfinished"></translation>
+ <translation>反转</translation>
</message>
</context>
<context>
@@ -440,22 +440,22 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
</message>
<message>
<source>Duplicate</source>
- <translation type="unfinished"></translation>
+ <translation>复制</translation>
</message>
</context>
<context>
<name>kImageAnnotator::ZoomPicker</name>
<message>
<source>Zoom In (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>放大(%1)</translation>
</message>
<message>
<source>Zoom Out (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>缩小(%1)</translation>
</message>
<message>
<source>Reset Zoom (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>重置大小(%1)</translation>
</message>
</context>
</TS>
More information about the Neon-commits
mailing list