diff --git a/app/app.pro b/app/app.pro index cbb4e86bd9..0396dcd4e4 100644 --- a/app/app.pro +++ b/app/app.pro @@ -16,10 +16,12 @@ RESOURCES += data/app.qrc MUI_TRANSLATIONS += \ translations/mui_cs.po \ - translations/mui_de.po + translations/mui_de.po \ + translations/mui_it.po RC_LANGS.cs = --lang LANG_CZECH --sublang SUBLANG_NEUTRAL RC_LANGS.de = --lang LANG_GERMAN --sublang SUBLANG_NEUTRAL +RC_LANGS.it = --lang LANG_ITALIAN --sublang SUBLANG_NEUTRAL EXTRA_TRANSLATIONS += \ $$PWD/../translations/pencil_ar.ts \ @@ -88,7 +90,6 @@ HEADERS += \ src/shortcutspage.h \ src/timelinepage.h \ src/toolspage.h \ - src/preview.h \ src/basedockwidget.h \ src/colorbox.h \ src/colorinspector.h \ @@ -140,7 +141,6 @@ SOURCES += \ src/shortcutspage.cpp \ src/timelinepage.cpp \ src/toolspage.cpp \ - src/preview.cpp \ src/basedockwidget.cpp \ src/colorbox.cpp \ src/colorinspector.cpp \ diff --git a/app/src/basedockwidget.cpp b/app/src/basedockwidget.cpp index d052dd1cc1..4d9cac3662 100644 --- a/app/src/basedockwidget.cpp +++ b/app/src/basedockwidget.cpp @@ -34,34 +34,8 @@ BaseDockWidget::BaseDockWidget(QWidget* pParent) "border-width: 1px; }"); } #endif - } BaseDockWidget::~BaseDockWidget() { } - -void BaseDockWidget::resizeEvent(QResizeEvent *event) -{ - QDockWidget::resizeEvent(event); - - // Not sure where the -2 comes from, but the event width is always 2 more than what is passed to FlowLayout::setGeometry - int minHeight = getMinHeightForWidth(event->size().width() - 2); - - if (minHeight < 0) return; - -#ifdef __APPLE__ - // For some reason the behavior of minimumSize and the margin changes on mac when floating, so we need to do this -#else - int top, bottom; - layout()->getContentsMargins(nullptr, &top, nullptr, &bottom); - minHeight += top + bottom; -#endif - setMinimumSize(QSize(layout()->minimumSize().width(), minHeight)); -} - -int BaseDockWidget::getMinHeightForWidth(int width) -{ - Q_UNUSED(width) - return -1; -} diff --git a/app/src/basedockwidget.h b/app/src/basedockwidget.h index ddc91c2a5d..2f4e349264 100644 --- a/app/src/basedockwidget.h +++ b/app/src/basedockwidget.h @@ -30,8 +30,6 @@ class BaseDockWidget : public QDockWidget explicit BaseDockWidget(QWidget* pParent); virtual ~BaseDockWidget(); - void resizeEvent(QResizeEvent *event) override; - public: virtual void initUI() = 0; virtual void updateUI() = 0; @@ -39,9 +37,6 @@ class BaseDockWidget : public QDockWidget Editor* editor() const { return mEditor; } void setEditor( Editor* e ) { mEditor = e; } -protected: - virtual int getMinHeightForWidth(int width); - private: Editor* mEditor = nullptr; }; diff --git a/app/src/colorbox.cpp b/app/src/colorbox.cpp index 249fca92c4..4b11f3ff15 100644 --- a/app/src/colorbox.cpp +++ b/app/src/colorbox.cpp @@ -35,7 +35,7 @@ void ColorBox::initUI() mColorWheel = new ColorWheel(this); QVBoxLayout* layout = new QVBoxLayout; - layout->setContentsMargins(5, 5, 5, 5); + layout->setContentsMargins(3, 3, 3, 3); layout->addWidget(mColorWheel); layout->setStretch(0, 1); layout->setStretch(1, 0); diff --git a/app/src/filedialog.cpp b/app/src/filedialog.cpp index 42ee65db25..7499b3815e 100644 --- a/app/src/filedialog.cpp +++ b/app/src/filedialog.cpp @@ -186,7 +186,7 @@ QString FileDialog::saveDialogCaption(FileType fileType) case FileType::GIF: return tr("Export Animated GIF"); case FileType::ANIMATED_IMAGE: return tr("Export animated image"); case FileType::MOVIE: return tr("Export movie"); - case FileType::SOUND: return tr("Export sound"); + case FileType::SOUND: return ""; case FileType::PALETTE: return tr("Export palette"); } return ""; diff --git a/app/src/importimageseqdialog.cpp b/app/src/importimageseqdialog.cpp index 86c4515913..72b3152ee0 100644 --- a/app/src/importimageseqdialog.cpp +++ b/app/src/importimageseqdialog.cpp @@ -187,8 +187,6 @@ void ImportImageSeqDialog::importArbitrarySequence() for (const QString& strImgFile : files) { - QString strImgFileLower = strImgFile.toLower(); - Status st = mEditor->importImage(strImgFile); if (!st.ok()) { @@ -225,7 +223,6 @@ const PredefinedKeySetParams ImportImageSeqDialog::predefinedKeySetParams() cons // local vars for testing file validity int dot = strFilePath.lastIndexOf("."); int slash = strFilePath.lastIndexOf("/"); - QString fName = strFilePath.mid(slash + 1); QString path = strFilePath.left(slash + 1); QString digit = strFilePath.mid(slash + 1, dot - slash - 1); @@ -275,7 +272,7 @@ const PredefinedKeySetParams ImportImageSeqDialog::predefinedKeySetParams() cons dot = finalList[0].lastIndexOf("."); QStringList absolutePaths; - for (QString fileName : finalList) { + for (const QString& fileName : finalList) { absolutePaths << path + fileName; } @@ -338,7 +335,6 @@ QStringList ImportImageSeqDialog::getFilePaths() Status ImportImageSeqDialog::validateKeySet(const PredefinedKeySet& keySet, const QStringList& filepaths) { - QString msg = ""; QString failedPathsString; Status status = Status::OK; diff --git a/app/src/mainwindow2.cpp b/app/src/mainwindow2.cpp index f15d989198..b4302e651b 100644 --- a/app/src/mainwindow2.cpp +++ b/app/src/mainwindow2.cpp @@ -68,7 +68,6 @@ GNU General Public License for more details. #include "pegbaralignmentdialog.h" #include "repositionframesdialog.h" -//#include "preview.h" #include "errordialog.h" #include "filedialog.h" #include "importimageseqdialog.h" @@ -1166,6 +1165,7 @@ void MainWindow2::setupKeyboardShortcuts() return keySequence; }; + // File menu ui->actionNew->setShortcut(cmdKeySeq(CMD_NEW_FILE)); ui->actionOpen->setShortcut(cmdKeySeq(CMD_OPEN_FILE)); ui->actionSave->setShortcut(cmdKeySeq(CMD_SAVE_FILE)); @@ -1173,14 +1173,19 @@ void MainWindow2::setupKeyboardShortcuts() ui->actionImport_Image->setShortcut(cmdKeySeq(CMD_IMPORT_IMAGE)); ui->actionImport_ImageSeq->setShortcut(cmdKeySeq(CMD_IMPORT_IMAGE_SEQ)); + ui->actionImport_ImageSeqNum->setShortcut(cmdKeySeq(CMD_IMPORT_IMAGE_PREDEFINED_SET)); ui->actionImport_MovieVideo->setShortcut(cmdKeySeq(CMD_IMPORT_MOVIE_VIDEO)); + ui->actionImport_AnimatedImage->setShortcut(cmdKeySeq(CMD_IMPORT_ANIMATED_IMAGE)); + ui->actionImportLayers_from_pclx->setShortcut(cmdKeySeq(CMD_IMPORT_LAYERS)); + ui->actionImport_Sound->setShortcut(cmdKeySeq(CMD_IMPORT_SOUND)); ui->actionImport_MovieAudio->setShortcut(cmdKeySeq(CMD_IMPORT_MOVIE_AUDIO)); ui->actionImport_Append_Palette->setShortcut(cmdKeySeq(CMD_IMPORT_PALETTE)); - ui->actionImport_Sound->setShortcut(cmdKeySeq(CMD_IMPORT_SOUND)); + ui->actionImport_Replace_Palette->setShortcut(cmdKeySeq(CMD_IMPORT_PALETTE_REPLACE)); ui->actionExport_Image->setShortcut(cmdKeySeq(CMD_EXPORT_IMAGE)); ui->actionExport_ImageSeq->setShortcut(cmdKeySeq(CMD_EXPORT_IMAGE_SEQ)); ui->actionExport_Movie->setShortcut(cmdKeySeq(CMD_EXPORT_MOVIE)); + ui->actionExport_Animated_GIF->setShortcut(cmdKeySeq(CMD_EXPORT_GIF)); ui->actionExport_Palette->setShortcut(cmdKeySeq(CMD_EXPORT_PALETTE)); // edit menu @@ -1196,10 +1201,12 @@ void MainWindow2::setupKeyboardShortcuts() ui->actionFlip_Y->setShortcut(cmdKeySeq(CMD_SELECTION_FLIP_VERTICAL)); ui->actionSelect_All->setShortcut(cmdKeySeq(CMD_SELECT_ALL)); ui->actionDeselect_All->setShortcut(cmdKeySeq(CMD_DESELECT_ALL)); + ui->actionPegbarAlignment->setShortcut(cmdKeySeq(CMD_PEGBAR_ALIGNMENT)); ui->actionPreference->setShortcut(cmdKeySeq(CMD_PREFERENCE)); // View menu ui->actionResetWindows->setShortcut(cmdKeySeq(CMD_RESET_WINDOWS)); + ui->actionLockWindows->setShortcut(cmdKeySeq(CMD_LOCK_WINDOWS)); ui->actionReset_View->setShortcut(cmdKeySeq(CMD_RESET_ZOOM_ROTATE)); ui->actionCenter_View->setShortcut(cmdKeySeq(CMD_CENTER_VIEW)); ui->actionZoom_In->setShortcut(cmdKeySeq(CMD_ZOOM_IN)); @@ -1216,14 +1223,22 @@ void MainWindow2::setupKeyboardShortcuts() ui->actionReset_Rotation->setShortcut(cmdKeySeq(CMD_RESET_ROTATION)); ui->actionHorizontal_Flip->setShortcut(cmdKeySeq(CMD_FLIP_HORIZONTAL)); ui->actionVertical_Flip->setShortcut(cmdKeySeq(CMD_FLIP_VERTICAL)); - ui->actionPreview->setShortcut(cmdKeySeq(CMD_PREVIEW)); ui->actionGrid->setShortcut(cmdKeySeq(CMD_GRID)); + ui->actionCenter->setShortcut(cmdKeySeq(CMD_OVERLAY_CENTER)); + ui->actionThirds->setShortcut(cmdKeySeq(CMD_OVERLAY_THIRDS)); + ui->actionGoldenRatio->setShortcut(cmdKeySeq(CMD_OVERLAY_GOLDEN_RATIO)); + ui->actionSafeAreas->setShortcut(cmdKeySeq(CMD_OVERLAY_SAFE_AREAS)); + ui->actionOnePointPerspective->setShortcut(cmdKeySeq(CMD_OVERLAY_ONE_POINT_PERSPECTIVE)); + ui->actionTwoPointPerspective->setShortcut(cmdKeySeq(CMD_OVERLAY_TWO_POINT_PERSPECTIVE)); + ui->actionThreePointPerspective->setShortcut(cmdKeySeq(CMD_OVERLAY_THREE_POINT_PERSPECTIVE)); ui->actionOnionPrev->setShortcut(cmdKeySeq(CMD_ONIONSKIN_PREV)); ui->actionOnionNext->setShortcut(cmdKeySeq(CMD_ONIONSKIN_NEXT)); ui->actionStatusBar->setShortcut(cmdKeySeq(CMD_TOGGLE_STATUS_BAR)); + // Animation menu ui->actionPlay->setShortcut(cmdKeySeq(CMD_PLAY)); ui->actionLoop->setShortcut(cmdKeySeq(CMD_LOOP)); + ui->actionLoopControl->setShortcut(cmdKeySeq(CMD_LOOP_CONTROL)); ui->actionPrevious_Frame->setShortcut(cmdKeySeq(CMD_GOTO_PREV_FRAME)); ui->actionNext_Frame->setShortcut(cmdKeySeq(CMD_GOTO_NEXT_FRAME)); ui->actionPrev_KeyFrame->setShortcut(cmdKeySeq(CMD_GOTO_PREV_KEY_FRAME)); @@ -1239,6 +1254,7 @@ void MainWindow2::setupKeyboardShortcuts() ui->actionMove_Frame_Forward->setShortcut(cmdKeySeq(CMD_MOVE_FRAME_FORWARD)); ui->actionFlip_inbetween->setShortcut(cmdKeySeq(CMD_FLIP_INBETWEEN)); ui->actionFlip_rolling->setShortcut(cmdKeySeq(CMD_FLIP_ROLLING)); + ui->actionReposition_Selected_Frames->setShortcut(cmdKeySeq(CMD_SELECTION_REPOSITION_FRAMES)); ShortcutFilter* shortcutFilter = new ShortcutFilter(ui->scribbleArea, this); ui->actionMove->setShortcut(cmdKeySeq(CMD_TOOL_MOVE)); @@ -1252,6 +1268,7 @@ void MainWindow2::setupKeyboardShortcuts() ui->actionBucket->setShortcut(cmdKeySeq(CMD_TOOL_BUCKET)); ui->actionEyedropper->setShortcut(cmdKeySeq(CMD_TOOL_EYEDROPPER)); ui->actionEraser->setShortcut(cmdKeySeq(CMD_TOOL_ERASER)); + ui->actionResetToolsDefault->setShortcut(cmdKeySeq(CMD_RESET_ALL_TOOLS)); ui->actionMove->installEventFilter(shortcutFilter); ui->actionMove->installEventFilter(shortcutFilter); @@ -1266,11 +1283,15 @@ void MainWindow2::setupKeyboardShortcuts() ui->actionEyedropper->installEventFilter(shortcutFilter); ui->actionEraser->installEventFilter(shortcutFilter); + // Layer menu ui->actionNew_Bitmap_Layer->setShortcut(cmdKeySeq(CMD_NEW_BITMAP_LAYER)); ui->actionNew_Vector_Layer->setShortcut(cmdKeySeq(CMD_NEW_VECTOR_LAYER)); ui->actionNew_Camera_Layer->setShortcut(cmdKeySeq(CMD_NEW_CAMERA_LAYER)); ui->actionNew_Sound_Layer->setShortcut(cmdKeySeq(CMD_NEW_SOUND_LAYER)); ui->actionDelete_Current_Layer->setShortcut(cmdKeySeq(CMD_DELETE_CUR_LAYER)); + ui->actionChangeLineColorCurrent_keyframe->setShortcut(cmdKeySeq(CMD_CHANGE_LINE_COLOR_KEYFRAME)); + ui->actionChangeLineColorAll_keyframes_on_layer->setShortcut(cmdKeySeq(CMD_CHANGE_LINE_COLOR_LAYER)); + ui->actionChangeLayerOpacity->setShortcut(cmdKeySeq(CMD_CHANGE_LAYER_OPACITY)); ui->actionVisibilityCurrentLayerOnly->setShortcut(cmdKeySeq(CMD_CURRENT_LAYER_VISIBILITY)); ui->actionVisibilityRelative->setShortcut(cmdKeySeq(CMD_RELATIVE_LAYER_VISIBILITY)); diff --git a/app/src/preview.cpp b/app/src/preview.cpp deleted file mode 100644 index 6b1ad5f9f9..0000000000 --- a/app/src/preview.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - -Pencil2D - Traditional Animation Software -Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon -Copyright (C) 2012-2020 Matthew Chiawen Chang - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -*/ - -#include "preview.h" -#include - - -PreviewCanvas::PreviewCanvas( QWidget* parent ) : QWidget( parent ) -{ - setFixedSize( 200, 200 ); -} - -void PreviewCanvas::paintEvent( QPaintEvent* ) -{ - QPainter painter( this ); - if ( mBitmapImage ) - { - painter.drawImage( rect( ), *( mBitmapImage->image() ) ); - } - painter.end( ); -} - -PreviewWidget::PreviewWidget( QWidget* parent ) : QDockWidget( parent ) -{ - mCanvas = new PreviewCanvas( this ); - setWidget( mCanvas ); -} - -void PreviewWidget::updateImage() -{ - mCanvas->update(); -} diff --git a/app/src/preview.h b/app/src/preview.h deleted file mode 100644 index 006a0c5a4d..0000000000 --- a/app/src/preview.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - -Pencil2D - Traditional Animation Software -Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon -Copyright (C) 2012-2020 Matthew Chiawen Chang - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -*/ - -#ifndef PREVIEW_H -#define PREVIEW_H - -#include -#include "bitmapimage.h" - -class PreviewCanvas : public QWidget -{ - Q_OBJECT - -public: - PreviewCanvas( QWidget* ); - void setImage( BitmapImage* img ) { mBitmapImage = img; } - -protected: - void paintEvent( QPaintEvent* ) override; - -private: - BitmapImage* mBitmapImage = nullptr; -}; - - - -class PreviewWidget : public QDockWidget -{ - Q_OBJECT -public: - PreviewWidget(QWidget *parent = nullptr); - void setImage( BitmapImage* img ) { mCanvas->setImage( img ); } - void updateImage(); - -private: - PreviewCanvas* mCanvas = nullptr; - -}; - -#endif // PREVIEW_H diff --git a/app/src/repositionframesdialog.cpp b/app/src/repositionframesdialog.cpp index 159cc66ee9..5ef54dc7fe 100644 --- a/app/src/repositionframesdialog.cpp +++ b/app/src/repositionframesdialog.cpp @@ -190,7 +190,7 @@ void RepositionFramesDialog::updateLayersBox() void RepositionFramesDialog::closeClicked() { - rejected(); + emit rejected(); } void RepositionFramesDialog::updateLayersToSelect() diff --git a/app/src/shortcutspage.cpp b/app/src/shortcutspage.cpp index c8724fea1d..66caf4dc6f 100644 --- a/app/src/shortcutspage.cpp +++ b/app/src/shortcutspage.cpp @@ -310,8 +310,8 @@ static QString getHumanReadableShortcutName(const QString& cmdName) {CMD_EXPORT_IMAGE, ShortcutsPage::tr("Export Image", "Shortcut")}, {CMD_EXPORT_IMAGE_SEQ, ShortcutsPage::tr("Export Image Sequence", "Shortcut")}, {CMD_EXPORT_MOVIE, ShortcutsPage::tr("Export Movie", "Shortcut")}, + {CMD_EXPORT_GIF, ShortcutsPage::tr("Export Animated GIF", "Shortcut")}, {CMD_EXPORT_PALETTE, ShortcutsPage::tr("Export Palette", "Shortcut")}, - {CMD_EXPORT_SOUND, ShortcutsPage::tr("Export Sound", "Shortcut")}, {CMD_FLIP_HORIZONTAL, ShortcutsPage::tr("View: Horizontal Flip", "Shortcut")}, {CMD_FLIP_VERTICAL, ShortcutsPage::tr("View: Vertical Flip", "Shortcut")}, {CMD_FLIP_INBETWEEN, ShortcutsPage::tr("Flip In-Between", "Shortcut")}, @@ -322,18 +322,34 @@ static QString getHumanReadableShortcutName(const QString& cmdName) {CMD_SELECTION_FLIP_HORIZONTAL, ShortcutsPage::tr("Selection: Horizontal Flip", "Shortcut")}, {CMD_SELECTION_FLIP_VERTICAL, ShortcutsPage::tr("Selection: Vertical Flip", "Shortcut")}, {CMD_GOTO_PREV_KEY_FRAME, ShortcutsPage::tr("Previous Keyframe", "Shortcut")}, + {CMD_SELECTION_REPOSITION_FRAMES, ShortcutsPage::tr("Selection: Reposition Frames", "Shortcut")}, {CMD_SELECTION_ADD_FRAME_EXPOSURE, ShortcutsPage::tr("Selection: Add Frame Exposure", "Shortcut")}, {CMD_SELECTION_SUBTRACT_FRAME_EXPOSURE, ShortcutsPage::tr("Selection: Subtract Frame Exposure", "Shortcut")}, {CMD_REVERSE_SELECTED_FRAMES, ShortcutsPage::tr("Selection: Reverse Keyframes", "Shortcut")}, {CMD_REMOVE_SELECTED_FRAMES, ShortcutsPage::tr("Selection: Remove Keyframes", "Shortcut")}, {CMD_GRID, ShortcutsPage::tr("Toggle Grid", "Shortcut")}, + {CMD_OVERLAY_CENTER, ShortcutsPage::tr("Toggle Center Overlay", "Shortcut")}, + {CMD_OVERLAY_THIRDS, ShortcutsPage::tr("Toggle Thirds Overlay", "Shortcut")}, + {CMD_OVERLAY_GOLDEN_RATIO, ShortcutsPage::tr("Toggle Golden Ratio Overlay", "Shortcut")}, + {CMD_OVERLAY_SAFE_AREAS, ShortcutsPage::tr("Toggle Safe Areas Overlay", "Shortcut")}, + {CMD_OVERLAY_ONE_POINT_PERSPECTIVE, ShortcutsPage::tr("Toggle One Point Perspective Overlay", "Shortcut")}, + {CMD_OVERLAY_TWO_POINT_PERSPECTIVE, ShortcutsPage::tr("Toggle Two Point Perspective Overlay", "Shortcut")}, + {CMD_OVERLAY_THREE_POINT_PERSPECTIVE, ShortcutsPage::tr("Toggle Three Point Perspective Overlay", "Shortcut")}, {CMD_IMPORT_IMAGE, ShortcutsPage::tr("Import Image", "Shortcut")}, {CMD_IMPORT_IMAGE_SEQ, ShortcutsPage::tr("Import Image Sequence", "Shortcut")}, + {CMD_IMPORT_IMAGE_PREDEFINED_SET, ShortcutsPage::tr("Import Image Predefined Set", "Shortcut")}, + {CMD_IMPORT_MOVIE_VIDEO, ShortcutsPage::tr("Import Movie Video", "Shortcut")}, + {CMD_IMPORT_MOVIE_AUDIO, ShortcutsPage::tr("Import Movie Audio", "Shortcut")}, + {CMD_IMPORT_ANIMATED_IMAGE, ShortcutsPage::tr("Import Animated Image", "Shortcut")}, + {CMD_IMPORT_LAYERS, ShortcutsPage::tr("Import Layers from project file", "Shortcut")}, + {CMD_IMPORT_PALETTE, ShortcutsPage::tr("Import Palette (Append)", "Shortcut")}, + {CMD_IMPORT_PALETTE_REPLACE, ShortcutsPage::tr("Import Palette (Replace)", "Shortcut")}, {CMD_IMPORT_SOUND, ShortcutsPage::tr("Import Sound", "Shortcut")}, {CMD_ALL_LAYER_VISIBILITY, ShortcutsPage::tr("Show All Layers", "Shortcut")}, {CMD_CURRENT_LAYER_VISIBILITY, ShortcutsPage::tr("Show Current Layer Only", "Shortcut")}, {CMD_RELATIVE_LAYER_VISIBILITY, ShortcutsPage::tr("Show Layers Relative to Current Layer", "Shortcut")}, {CMD_LOOP, ShortcutsPage::tr("Toggle Loop", "Shortcut")}, + {CMD_LOOP_CONTROL, ShortcutsPage::tr("Toggle Range Playback", "Shortcut")}, {CMD_MOVE_FRAME_BACKWARD, ShortcutsPage::tr("Move Frame Backward", "Shortcut")}, {CMD_MOVE_FRAME_FORWARD, ShortcutsPage::tr("Move Frame Forward", "Shortcut")}, {CMD_NEW_BITMAP_LAYER, ShortcutsPage::tr("New Bitmap Layer", "Shortcut")}, @@ -346,11 +362,12 @@ static QString getHumanReadableShortcutName(const QString& cmdName) {CMD_OPEN_FILE, ShortcutsPage::tr("Open File", "Shortcut")}, {CMD_PASTE, ShortcutsPage::tr("Paste", "Shortcut")}, {CMD_PLAY, ShortcutsPage::tr("Play/Stop", "Shortcut")}, + {CMD_PEGBAR_ALIGNMENT, ShortcutsPage::tr("Peg bar Alignment", "Shortcut")}, {CMD_PREFERENCE, ShortcutsPage::tr("Preferences", "Shortcut")}, - {CMD_PREVIEW, ShortcutsPage::tr("Preview", "Shortcut")}, {CMD_REDO, ShortcutsPage::tr("Redo", "Shortcut")}, {CMD_REMOVE_FRAME, ShortcutsPage::tr("Remove Frame", "Shortcut")}, {CMD_RESET_WINDOWS, ShortcutsPage::tr("Reset Windows", "Shortcut")}, + {CMD_LOCK_WINDOWS, ShortcutsPage::tr("Lock Windows", "Shortcut")}, {CMD_RESET_ZOOM_ROTATE, ShortcutsPage::tr("Reset View", "Shortcut")}, {CMD_CENTER_VIEW, ShortcutsPage::tr("Center View", "Shortcut")}, {CMD_ROTATE_ANTI_CLOCK, ShortcutsPage::tr("Rotate Anticlockwise", "Shortcut")}, @@ -378,6 +395,10 @@ static QString getHumanReadableShortcutName(const QString& cmdName) {CMD_TOOL_POLYLINE, ShortcutsPage::tr("Polyline Tool", "Shortcut")}, {CMD_TOOL_SELECT, ShortcutsPage::tr("Select Tool", "Shortcut")}, {CMD_TOOL_SMUDGE, ShortcutsPage::tr("Smudge Tool", "Shortcut")}, + {CMD_RESET_ALL_TOOLS, ShortcutsPage::tr("Reset all tools to default", "Shortcut")}, + {CMD_CHANGE_LINE_COLOR_KEYFRAME, ShortcutsPage::tr("Change Line Color (Current keyframe)", "Shortcut")}, + {CMD_CHANGE_LINE_COLOR_LAYER, ShortcutsPage::tr("Change Line Color (All keyframes on layer)", "Shortcut")}, + {CMD_CHANGE_LAYER_OPACITY, ShortcutsPage::tr("Change Layer / Keyframe Opacity", "Shortcut")}, {CMD_UNDO, ShortcutsPage::tr("Undo", "Shortcut")}, {CMD_REMOVE_LAST_POLYLINE_SEGMENT, ShortcutsPage::tr("Remove Last Polyline Segment", "Shortcut")}, {CMD_ZOOM_100, ShortcutsPage::tr("Set Zoom to 100%", "Shortcut")}, diff --git a/app/src/spinslider.cpp b/app/src/spinslider.cpp index a9bf226277..86acb8ac10 100644 --- a/app/src/spinslider.cpp +++ b/app/src/spinslider.cpp @@ -93,6 +93,8 @@ void SpinSlider::setLabel(QString newText) void SpinSlider::setValue(qreal v) { + Q_ASSERT(mMin <= v && v <= mMax); + int value2 = 0; if (mGrowthType == LINEAR) { diff --git a/app/src/timeline.cpp b/app/src/timeline.cpp index dcb26b28f1..92a5544e9c 100644 --- a/app/src/timeline.cpp +++ b/app/src/timeline.cpp @@ -27,6 +27,7 @@ GNU General Public License for more details. #include #include #include +#include #include "editor.h" #include "layermanager.h" @@ -191,12 +192,17 @@ void TimeLine::initUI() timeLineContent->setLayout(lay); setWidget(timeLineContent); + mScrollingStoppedTimer = new QTimer(); + mScrollingStoppedTimer->setSingleShot(true); + setWindowFlags(Qt::WindowStaysOnTopHint); connect(mHScrollbar, &QScrollBar::valueChanged, mTracks, &TimeLineCells::hScrollChange); connect(mTracks, &TimeLineCells::offsetChanged, mHScrollbar, &QScrollBar::setValue); connect(mVScrollbar, &QScrollBar::valueChanged, mTracks, &TimeLineCells::vScrollChange); connect(mVScrollbar, &QScrollBar::valueChanged, mLayerList, &TimeLineCells::vScrollChange); + connect(mVScrollbar, &QScrollBar::valueChanged, this, &TimeLine::onScrollbarValueChanged); + connect(mScrollingStoppedTimer, &QTimer::timeout, mLayerList, &TimeLineCells::onScrollingVerticallyStopped); connect(splitter, &QSplitter::splitterMoved, this, &TimeLine::updateLength); @@ -232,7 +238,7 @@ void TimeLine::initUI() LayerManager* layer = editor()->layers(); connect(layer, &LayerManager::layerCountChanged, this, &TimeLine::updateLayerNumber); - connect(layer, &LayerManager::currentLayerChanged, this, &TimeLine::onLayerChanged); + connect(layer, &LayerManager::currentLayerChanged, this, &TimeLine::onCurrentLayerChanged); mNumLayers = layer->count(); scrubbing = false; @@ -285,6 +291,12 @@ void TimeLine::wheelEvent(QWheelEvent* event) } } +void TimeLine::onScrollbarValueChanged() +{ + // After the scrollbar has been updated, prepare to trigger stopped event + mScrollingStoppedTimer->start(150); +} + void TimeLine::updateFrame(int frameNumber) { Q_ASSERT(mTracks); @@ -358,7 +370,27 @@ void TimeLine::onObjectLoaded() updateLayerNumber(editor()->layers()->count()); } -void TimeLine::onLayerChanged() +void TimeLine::onCurrentLayerChanged() { + updateVerticalScrollbarPosition(); mLayerDeleteButton->setEnabled(editor()->layers()->canDeleteLayer(editor()->currentLayerIndex())); } + +void TimeLine::updateVerticalScrollbarPosition() +{ + // invert index so 0 is at the top + int idx = mNumLayers - editor()->currentLayerIndex() - 1; + // number of visible layers + int height = mNumLayers - mVScrollbar->maximum(); + // scroll bar position/offset + int pos = mVScrollbar->value(); + + if (idx < pos) // above visible area + { + mVScrollbar->setValue(idx); + } + else if (idx >= pos + height) // below visible area + { + mVScrollbar->setValue(idx - height + 1); + } +} diff --git a/app/src/timeline.h b/app/src/timeline.h index f5f0191772..ec25eff0d7 100644 --- a/app/src/timeline.h +++ b/app/src/timeline.h @@ -25,6 +25,7 @@ class TimeLineCells; class TimeControls; class QToolButton; +class QWheelEvent; class TimeLine : public BaseDockWidget @@ -53,7 +54,8 @@ class TimeLine : public BaseDockWidget int getRangeUpper(); void onObjectLoaded(); - void onLayerChanged(); + void onCurrentLayerChanged(); + void onScrollbarValueChanged(); signals: void selectionChanged(); @@ -76,6 +78,7 @@ class TimeLine : public BaseDockWidget void onionPrevClick(); void onionNextClick(); void playButtonTriggered(); + public: bool scrubbing = false; @@ -84,12 +87,16 @@ class TimeLine : public BaseDockWidget void wheelEvent( QWheelEvent* ) override; private: + void updateVerticalScrollbarPosition(); + QScrollBar* mHScrollbar = nullptr; QScrollBar* mVScrollbar = nullptr; TimeLineCells* mTracks = nullptr; TimeLineCells* mLayerList = nullptr; TimeControls* mTimeControls = nullptr; + QTimer* mScrollingStoppedTimer = nullptr; + QToolButton* mLayerDeleteButton = nullptr; int mNumLayers = 0; int mLastUpdatedFrame = 0; diff --git a/app/src/timelinecells.cpp b/app/src/timelinecells.cpp index f3fab5915b..720108a42a 100644 --- a/app/src/timelinecells.cpp +++ b/app/src/timelinecells.cpp @@ -1083,7 +1083,7 @@ void TimeLineCells::mouseReleaseEvent(QMouseEvent* event) updateContent(); } } - if (mType == TIMELINE_CELL_TYPE::Layers && layerNumber != mStartLayerNumber && mStartLayerNumber != -1 && layerNumber != -1) + if (mType == TIMELINE_CELL_TYPE::Layers && !mScrollingVertically && layerNumber != mStartLayerNumber && mStartLayerNumber != -1 && layerNumber != -1) { mToLayer = getInbetweenLayerNumber(event->pos().y()); if (mToLayer != mFromLayer && mToLayer > -1 && mToLayer < mEditor->layers()->count()) @@ -1210,9 +1210,15 @@ void TimeLineCells::hScrollChange(int x) void TimeLineCells::vScrollChange(int x) { mLayerOffset = x; + mScrollingVertically = true; updateContent(); } +void TimeLineCells::onScrollingVerticallyStopped() +{ + mScrollingVertically = false; +} + void TimeLineCells::setMouseMoveY(int x) { mMouseMoveY = x; diff --git a/app/src/timelinecells.h b/app/src/timelinecells.h index 33d5d929cb..aa42d9ca32 100644 --- a/app/src/timelinecells.h +++ b/app/src/timelinecells.h @@ -75,6 +75,7 @@ public slots: void updateFrame(int frameNumber); void hScrollChange(int); void vScrollChange(int); + void onScrollingVerticallyStopped(); void setMouseMoveY(int x); protected: @@ -152,6 +153,8 @@ private slots: int mLayerOffset = 0; Qt::MouseButton primaryButton = Qt::NoButton; + bool mScrollingVertically = false; + bool mCanMoveFrame = false; bool mMovingFrames = false; diff --git a/app/src/toolbox.cpp b/app/src/toolbox.cpp index ff155ec225..653172cff7 100644 --- a/app/src/toolbox.cpp +++ b/app/src/toolbox.cpp @@ -137,8 +137,18 @@ void ToolBoxWidget::initUI() connect(editor()->layers(), &LayerManager::currentLayerChanged, this, &ToolBoxWidget::onLayerDidChange); - - FlowLayout* flowlayout = new FlowLayout; + connect(this, &QDockWidget::dockLocationChanged, this, [=](Qt::DockWidgetArea area) { + if (area == Qt::DockWidgetArea::TopDockWidgetArea || area == Qt::BottomDockWidgetArea) { + const int minimumHeight = ui->scrollAreaWidgetContents_2->layout()->heightForWidth(width()); + ui->scrollArea->setMinimumHeight(minimumHeight); + setMinimumHeight(minimumHeight); + } else { + ui->scrollArea->setMinimumHeight(0); // Default value + // Don't set own minimum height and let Qt come up with a sensible value + } + }); + + FlowLayout* flowlayout = new FlowLayout(3,3,3); flowlayout->addWidget(ui->pencilButton); flowlayout->addWidget(ui->eraserButton); @@ -154,6 +164,7 @@ void ToolBoxWidget::initUI() delete ui->scrollAreaWidgetContents_2->layout(); ui->scrollAreaWidgetContents_2->setLayout(flowlayout); + ui->scrollAreaWidgetContents_2->setContentsMargins(0,0,0,0); QSettings settings(PENCIL2D, PENCIL2D); restoreGeometry(settings.value("ToolBoxGeom").toByteArray()); @@ -163,6 +174,15 @@ void ToolBoxWidget::updateUI() { } +void ToolBoxWidget::resizeEvent(QResizeEvent* event) +{ + QDockWidget::resizeEvent(event); + + const int minimumHeight = ui->scrollArea->minimumHeight(); + if (minimumHeight <= 0) { return; } + setMinimumHeight(minimumHeight); +} + void ToolBoxWidget::onToolSetActive(ToolType toolType) { deselectAllTools(); @@ -265,11 +285,6 @@ void ToolBoxWidget::smudgeOn() toolOn(SMUDGE, ui->smudgeButton); } -int ToolBoxWidget::getMinHeightForWidth(int width) -{ - return ui->toolGroup->layout()->heightForWidth(width); -} - void ToolBoxWidget::deselectAllTools() { ui->pencilButton->setChecked(false); diff --git a/app/src/toolbox.h b/app/src/toolbox.h index e053988b2b..617d9b07a1 100644 --- a/app/src/toolbox.h +++ b/app/src/toolbox.h @@ -59,7 +59,7 @@ public slots: void smudgeOn(); protected: - int getMinHeightForWidth(int width) override; + void resizeEvent(QResizeEvent* event) override; private: void deselectAllTools(); diff --git a/app/src/tooloptionwidget.cpp b/app/src/tooloptionwidget.cpp index 64a45ca6e9..e435fabee8 100644 --- a/app/src/tooloptionwidget.cpp +++ b/app/src/tooloptionwidget.cpp @@ -72,8 +72,14 @@ void ToolOptionWidget::updateUI() const Properties& p = currentTool->properties; - setPenWidth(p.width); - setPenFeather(p.feather); + if (currentTool->isPropertyEnabled(WIDTH)) + { + setPenWidth(p.width); + } + if (currentTool->isPropertyEnabled(FEATHER)) + { + setPenFeather(p.feather); + } setUseFeather(p.useFeather); setPressure(p.pressure); setPenInvisibility(p.invisibility); @@ -83,6 +89,7 @@ void ToolOptionWidget::updateUI() setStabilizerLevel(p.stabilizerLevel); setFillContour(p.useFillContour); setShowSelectionInfo(p.showSelectionInfo); + setClosedPath(p.closedPolylinePath); } void ToolOptionWidget::createUI() @@ -93,6 +100,7 @@ void ToolOptionWidget::makeConnectionToEditor(Editor* editor) auto toolManager = editor->tools(); connect(ui->useBezierBox, &QCheckBox::clicked, toolManager, &ToolManager::setBezier); + connect(ui->useClosedPathBox, &QCheckBox::clicked, toolManager, &ToolManager::setClosedPath); connect(ui->usePressureBox, &QCheckBox::clicked, toolManager, &ToolManager::setPressure); connect(ui->makeInvisibleBox, &QCheckBox::clicked, toolManager, &ToolManager::setInvisibility); connect(ui->preserveAlphaBox, &QCheckBox::clicked, toolManager, &ToolManager::setPreserveAlpha); @@ -139,6 +147,7 @@ void ToolOptionWidget::onToolPropertyChanged(ToolType, ToolPropertyType ePropert case FILLCONTOUR: setFillContour(p.useFillContour); break; case SHOWSELECTIONINFO: setShowSelectionInfo(p.showSelectionInfo); break; case BEZIER: setBezier(p.bezier_state); break; + case CLOSEDPATH: setClosedPath(p.closedPolylinePath); break; case CAMERAPATH: { break; } case TOLERANCE: break; case USETOLERANCE: break; @@ -180,6 +189,7 @@ void ToolOptionWidget::setVisibility(BaseTool* tool) ui->featherSpinBox->setVisible(tool->isPropertyEnabled(FEATHER)); ui->useFeatherBox->setVisible(tool->isPropertyEnabled(USEFEATHER)); ui->useBezierBox->setVisible(tool->isPropertyEnabled(BEZIER)); + ui->useClosedPathBox->setVisible(tool->isPropertyEnabled(CLOSEDPATH)); ui->usePressureBox->setVisible(tool->isPropertyEnabled(PRESSURE)); ui->makeInvisibleBox->setVisible(tool->isPropertyEnabled(INVISIBILITY)); ui->preserveAlphaBox->setVisible(tool->isPropertyEnabled(PRESERVEALPHA)); @@ -345,6 +355,12 @@ void ToolOptionWidget::setBezier(bool useBezier) ui->useBezierBox->setChecked(useBezier); } +void ToolOptionWidget::setClosedPath(bool useClosedPath) +{ + QSignalBlocker b(ui->useClosedPathBox); + ui->useClosedPathBox->setChecked(useClosedPath); +} + void ToolOptionWidget::setShowSelectionInfo(bool showSelectionInfo) { QSignalBlocker b(ui->showInfoBox); @@ -359,6 +375,7 @@ void ToolOptionWidget::disableAllOptions() ui->featherSpinBox->hide(); ui->useFeatherBox->hide(); ui->useBezierBox->hide(); + ui->useClosedPathBox->hide(); ui->usePressureBox->hide(); ui->makeInvisibleBox->hide(); ui->preserveAlphaBox->hide(); diff --git a/app/src/tooloptionwidget.h b/app/src/tooloptionwidget.h index 1a0426f159..baccec01fb 100644 --- a/app/src/tooloptionwidget.h +++ b/app/src/tooloptionwidget.h @@ -65,6 +65,7 @@ public slots: void setStabilizerLevel(int); void setFillContour(int); void setBezier(bool); + void setClosedPath(bool); void setShowSelectionInfo(bool); void disableAllOptions(); diff --git a/app/translations/mui_it.po b/app/translations/mui_it.po new file mode 100644 index 0000000000..57c38747da --- /dev/null +++ b/app/translations/mui_it.po @@ -0,0 +1,33 @@ +# +# Translators: +# Mattia Rizzolo , 2024 +# albanobattistella , 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-22 15:26+0200\n" +"PO-Revision-Date: 2024-05-19 14:29+0000\n" +"Last-Translator: albanobattistella , 2024\n" +"Language-Team: Italian (https://app.transifex.com/pencil2d/teams/76612/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Generator: Translate Toolkit 3.9.0\n" +"X-Merge-On: location\n" + +#: STRINGTABLE.0 +msgid "Pencil2D" +msgstr "Pencil2D" + +#: STRINGTABLE.1 +msgid "Pencil2D Animation" +msgstr "Animazione Pencil2D" + +#: STRINGTABLE.2 +msgid "Pencil2D Animation (Old Format)" +msgstr "Animazione Pencil2D (vecchio formato)" diff --git a/app/ui/bucketoptionswidget.ui b/app/ui/bucketoptionswidget.ui index 49ffe7ee29..f3fd9c2554 100644 --- a/app/ui/bucketoptionswidget.ui +++ b/app/ui/bucketoptionswidget.ui @@ -6,10 +6,16 @@ 0 0 - 400 + 140 221 + + + 140 + 0 + + Form @@ -92,8 +98,17 @@ QLayout::SetDefaultConstraint + + 3 + - 0 + 3 + + + 3 + + + 3 6 diff --git a/app/ui/cameraoptionswidget.ui b/app/ui/cameraoptionswidget.ui index f2100f77f5..092c75fb6e 100644 --- a/app/ui/cameraoptionswidget.ui +++ b/app/ui/cameraoptionswidget.ui @@ -6,10 +6,16 @@ 0 0 - 254 + 140 208 + + + 140 + 0 + + 0 @@ -30,16 +36,16 @@ - 0 + 3 - 0 + 3 - 0 + 3 - 0 + 3 2 @@ -122,19 +128,19 @@ - 2 + 0 - 4 + 0 - 4 + 0 - 4 + 0 - 4 + 0 diff --git a/app/ui/colorinspector.ui b/app/ui/colorinspector.ui index e228df76c7..2140a289c6 100644 --- a/app/ui/colorinspector.ui +++ b/app/ui/colorinspector.ui @@ -7,10 +7,16 @@ 0 0 - 271 + 120 263 + + + 120 + 0 + + 0 @@ -19,16 +25,16 @@ - 5 + 3 - 2 + 3 - 2 + 3 - 2 + 3 @@ -39,13 +45,25 @@ - 1 + 0 HSV + + 3 + + + 3 + + + 3 + + + 3 + @@ -75,16 +93,44 @@ - + + + + 0 + 0 + + + - + + + + 0 + 0 + + + - + + + + 0 + 0 + + + - + + + + 0 + 0 + + + @@ -133,6 +179,18 @@ RGB + + 3 + + + 3 + + + 3 + + + 3 + @@ -148,10 +206,24 @@ - + + + + 0 + 0 + + + - + + + + 0 + 0 + + + @@ -161,10 +233,24 @@ - + + + + 0 + 0 + + + - + + + + 0 + 0 + + + diff --git a/app/ui/colorpalette.ui b/app/ui/colorpalette.ui index 559d9a1e7e..1155562fdd 100644 --- a/app/ui/colorpalette.ui +++ b/app/ui/colorpalette.ui @@ -6,10 +6,16 @@ 0 0 - 268 + 140 241 + + + 140 + 132 + + Color Palette @@ -225,12 +231,6 @@ 0 - - - 0 - 0 - - 16777215 diff --git a/app/ui/mainwindow2.ui b/app/ui/mainwindow2.ui index 57f4f66b2a..68a843fe20 100644 --- a/app/ui/mainwindow2.ui +++ b/app/ui/mainwindow2.ui @@ -209,7 +209,6 @@ - @@ -564,14 +563,6 @@ Vertical Flip - - - false - - - Preview - - true diff --git a/app/ui/onionskin.ui b/app/ui/onionskin.ui index 20c6eec598..9694cfc12f 100644 --- a/app/ui/onionskin.ui +++ b/app/ui/onionskin.ui @@ -6,13 +6,13 @@ 0 0 - 213 - 382 + 140 + 291 - 187 + 140 122 @@ -30,6 +30,9 @@ + + 0 + 0 @@ -76,8 +79,8 @@ 0 0 - 213 - 360 + 160 + 254 @@ -87,17 +90,20 @@ + + 3 + - 6 + 3 - 6 + 3 - 6 + 3 - 6 + 3 @@ -108,6 +114,9 @@ true + + 3 + QLayout::SetDefaultConstraint @@ -115,13 +124,13 @@ 0 - 6 + 3 0 - 6 + 3 @@ -189,6 +198,9 @@ true + + 3 + QLayout::SetDefaultConstraint @@ -196,13 +208,13 @@ 0 - 6 + 3 0 - 6 + 3 @@ -278,25 +290,28 @@ Distributed Opacity - + - 6 + 0 0 - 6 + 0 0 - 6 + 3 - - + + + + 3 + 0 @@ -310,7 +325,7 @@ 0 - + 0 @@ -318,12 +333,15 @@ - Min + Max + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - + 0 @@ -332,7 +350,7 @@ - 60 + 50 0 @@ -354,8 +372,11 @@ - - + + + + 3 + 0 @@ -369,7 +390,7 @@ 0 - + 0 @@ -377,12 +398,15 @@ - Max + Min + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - + 0 @@ -391,7 +415,7 @@ - 60 + 50 0 @@ -416,18 +440,25 @@ - - - Show Keyframes Only + + + 0 - - - - - - Show During Playback - - + + + + Show Keyframes Only + + + + + + + Show During Playback + + + + diff --git a/app/ui/timelinepage.ui b/app/ui/timelinepage.ui index bb67929173..90e3c72e20 100644 --- a/app/ui/timelinepage.ui +++ b/app/ui/timelinepage.ui @@ -126,11 +126,6 @@ - - - 10 - - <html><head/><body><p>(Applies to Pencil, Eraser, Pen, Polyline, Bucket and Brush tools)</p></body></html> diff --git a/app/ui/toolboxwidget.ui b/app/ui/toolboxwidget.ui index b2c062096b..a2449d45f8 100644 --- a/app/ui/toolboxwidget.ui +++ b/app/ui/toolboxwidget.ui @@ -6,13 +6,13 @@ 0 0 - 88 + 38 502 - 88 + 38 105 @@ -55,8 +55,8 @@ 0 0 - 88 - 480 + 32 + 477 diff --git a/app/ui/tooloptions.ui b/app/ui/tooloptions.ui index 8f63adf4b7..ceae06cc47 100644 --- a/app/ui/tooloptions.ui +++ b/app/ui/tooloptions.ui @@ -6,10 +6,16 @@ 0 0 - 174 + 140 355 + + + 140 + 0 + + Form @@ -42,25 +48,25 @@ 0 0 - 174 - 355 + 153 + 340 - false + true - 6 + 3 - 6 + 3 - 6 + 3 - 6 + 3 @@ -135,24 +141,111 @@ - - - Enable or disable feathering - - - Use Feather + + + 0 - - - - - - Show Size and Diff. - - - false - - + + + + Enable or disable feathering + + + Use Feather + + + + + + + Show Size and Diff. + + + false + + + + + + + Contour will be filled + + + Fill Contour + + + + + + + Close Polyline path (hold Ctrl to temporarily invert) + + + Closed Path + + + + + + + Use Bézier curves to create curved lines + + + Bézier + + + + + + + Vary strokes based on pressure when drawing on a tablet + + + Pressure + + + + + + + Use anti-aliasing to create smooth edges + + + Anti-Aliasing + + + + + + + Make invisible + + + Invisible + + + + + + + Preserve Alpha + + + Alpha + + + + + + + Merge vector lines when they are close together + + + Merge + + + + @@ -167,76 +260,6 @@ - - - - Contour will be filled - - - Fill Contour - - - - - - - Use Bézier curves to create curved lines - - - Bézier - - - - - - - Vary strokes based on pressure when drawing on a tablet - - - Pressure - - - - - - - Use anti-aliasing to create smooth edges - - - Anti-Aliasing - - - - - - - Make invisible - - - Invisible - - - - - - - Preserve Alpha - - - Alpha - - - - - - - Merge vector lines when they are close together - - - Merge - - - diff --git a/core_lib/data/resources/kb.ini b/core_lib/data/resources/kb.ini index 12f24b2ad3..afcd263ec0 100644 --- a/core_lib/data/resources/kb.ini +++ b/core_lib/data/resources/kb.ini @@ -6,12 +6,19 @@ CmdSaveAs=Ctrl+Shift+S CmdExit=Ctrl+Q CmdImportImage= CmdImportImageSequence= +CmdImportImagePredefinedSet= +CmdImportMovieVideo= +CmdImportAnimatedImage= +CmdImportLayers= CmdImportSound= +CmdImportMovieAudio= +CmdImportPalette= +CmdImportPaletteReplace= CmdExportImageSequence=Ctrl+R CmdExportImage=Ctrl+Shift+R CmdExportMovie= +CmdExportGIF=Ctrl+G CmdExportPalette= -CmdExportSound=Ctrl+I CmdUndo=Ctrl+Z CmdRemoveLastPolylineSegment=Backspace CmdRedo=Ctrl+Shift+Z @@ -22,8 +29,10 @@ CmdPaste=Ctrl+V CmdSelectAll=Ctrl+A CmdDeselectAll=Ctrl+D CmdClearFrame= +CmdPegBarAlignment= CmdPreferences= CmdResetWindows= +CmdLockWindows= CmdZoomIn=Ctrl+Up CmdZoomOut=Ctrl+Down CmdZoom400=4 @@ -40,13 +49,20 @@ CmdResetZoomRotate=Ctrl+H CmdCenterView=Ctrl+Shift+H CmdFlipHorizontal=Shift+H CmdFlipVertical=Shift+V -CmdPreview=Alt+P CmdGrid=G +CmdOverlayCenter= +CmdOverlayThirds= +CmdOverlayGoldenRatio= +CmdOverlaySafeAreas= +CmdOverlayOnePointPerspective= +CmdOverlayTwoPointPerspective= +CmdOverlayThreePointPerspective= CmdOnionSkinPrevious=O CmdOnionSkinNext=Alt+O CmdToggleStatusBar= CmdPlay=Ctrl+Return CmdLoop=Ctrl+L +CmdLoopControl= CmdFlipInBetween=Alt+Z CmdFlipRolling=Alt+X CmdGotoNextFrame=. @@ -61,6 +77,7 @@ CmdSelectionFlipHorizontal= CmdSelectionFlipVertical= CmdSelectionAddFrameExposure=Ctrl+"+" CmdSelectionSubtractFrameExposure=Ctrl+"-" +CmdSelectionRepositionFrames= CmdReverseSelectedFrames= CmdRemoveSelectedFrames= CmdRemoveFrame=Shift+F5 @@ -75,6 +92,7 @@ CmdToolPencil=N CmdToolBucket=K CmdToolEyedropper=I CmdToolEraser=E +CmdResetAllTools= CmdNewBitmapLayer=Ctrl+Alt+B CmdNewVectorLayer=Ctrl+Alt+V CmdNewSoundLayer=Ctrl+Alt+W @@ -83,6 +101,9 @@ CmdLayerVisibilityCurrentOnly=Alt+1 CmdLayerVisibilityRelative=Alt+2 CmdLayerVisibilityAll=Alt+3 CmdDeleteCurrentLayer= +CmdChangeLineColorKeyframe= +CmdChangeLineColorLayer= +CmdChangeLayerOpacity= CmdToggleToolBox=Ctrl+1 CmdToggleToolOptions=Ctrl+2 CmdToggleColorWheel=Ctrl+3 diff --git a/core_lib/src/canvascursorpainter.cpp b/core_lib/src/canvascursorpainter.cpp index 3118d7e553..b3fa32bd5d 100644 --- a/core_lib/src/canvascursorpainter.cpp +++ b/core_lib/src/canvascursorpainter.cpp @@ -17,6 +17,7 @@ GNU General Public License for more details. #include "canvascursorpainter.h" #include +#include CanvasCursorPainter::CanvasCursorPainter() { @@ -45,8 +46,14 @@ void CanvasCursorPainter::preparePainter(const CanvasCursorPainterOptions& paint { mOptions = painterOptions; if (mOptions.isAdjusting || mOptions.showCursor) { - mOptions.widthRect = viewTransform.mapRect(mOptions.widthRect); - mOptions.featherRect = viewTransform.mapRect(mOptions.featherRect); + // Apply full transform to center of widthRect, but only apply scale to the rect as a whole + // Otherwise, view rotations will result in an incorrect rect size + QPointF newCenter = viewTransform.map(mOptions.widthRect.center()); + qreal scale = qSqrt(qPow(viewTransform.m11(), 2) + qPow(viewTransform.m21(), 2)); + mOptions.widthRect.setSize(mOptions.widthRect.size() * scale); + mOptions.widthRect.moveCenter(newCenter); + mOptions.featherRect.setSize(mOptions.featherRect.size() * scale); + mOptions.featherRect.moveCenter(newCenter); } } diff --git a/core_lib/src/canvascursorpainter.h b/core_lib/src/canvascursorpainter.h index 9d8ad74122..e0788a86d7 100644 --- a/core_lib/src/canvascursorpainter.h +++ b/core_lib/src/canvascursorpainter.h @@ -25,7 +25,7 @@ struct CanvasCursorPainterOptions { QRectF widthRect; QRectF featherRect; - bool isAdjusting; + bool isAdjusting = false; bool useFeather = false; bool showCursor = false; }; diff --git a/core_lib/src/interface/backupelement.cpp b/core_lib/src/interface/backupelement.cpp index c30487a267..b4718a7b5a 100644 --- a/core_lib/src/interface/backupelement.cpp +++ b/core_lib/src/interface/backupelement.cpp @@ -60,7 +60,7 @@ void BackupBitmapElement::restore(Editor* editor) selectMan->calculateSelectionTransformation(); - editor->frameModified(this->frame); + emit editor->frameModified(this->frame); } void BackupVectorElement::restore(Editor* editor) @@ -109,7 +109,7 @@ void BackupVectorElement::restore(Editor* editor) selectMan->setTranslation(translation); selectMan->calculateSelectionTransformation(); - editor->frameModified(this->frame); + emit editor->frameModified(this->frame); } @@ -122,7 +122,7 @@ void BackupSoundElement::restore(Editor* editor) if (editor->currentFrame() != this->frame) { editor->scrubTo(this->frame); } - editor->frameModified(this->frame); + emit editor->frameModified(this->frame); // TODO: soundclip won't restore if overlapping on first frame if (this->frame > 0 && layer->getKeyFrameAt(this->frame) == nullptr) diff --git a/core_lib/src/interface/editor.cpp b/core_lib/src/interface/editor.cpp index b997168995..41df9cc3f8 100644 --- a/core_lib/src/interface/editor.cpp +++ b/core_lib/src/interface/editor.cpp @@ -549,7 +549,7 @@ void Editor::copyAndCut() for (int pos : currentLayer->selectedKeyFramesPositions()) { currentLayer->removeKeyFrame(pos); } - layers()->currentLayerChanged(currentLayerIndex()); + emit layers()->currentLayerChanged(currentLayerIndex()); emit updateTimeLine(); return; } diff --git a/core_lib/src/interface/scribblearea.cpp b/core_lib/src/interface/scribblearea.cpp index dbaa429841..26046470e9 100644 --- a/core_lib/src/interface/scribblearea.cpp +++ b/core_lib/src/interface/scribblearea.cpp @@ -442,22 +442,22 @@ void ScribbleArea::keyEventForSelection(QKeyEvent* event) case Qt::Key_Right: selectMan->translate(QPointF(1, 0)); selectMan->calculateSelectionTransformation(); - mEditor->frameModified(mEditor->currentFrame()); + emit mEditor->frameModified(mEditor->currentFrame()); return; case Qt::Key_Left: selectMan->translate(QPointF(-1, 0)); selectMan->calculateSelectionTransformation(); - mEditor->frameModified(mEditor->currentFrame()); + emit mEditor->frameModified(mEditor->currentFrame()); return; case Qt::Key_Up: selectMan->translate(QPointF(0, -1)); selectMan->calculateSelectionTransformation(); - mEditor->frameModified(mEditor->currentFrame()); + emit mEditor->frameModified(mEditor->currentFrame()); return; case Qt::Key_Down: selectMan->translate(QPointF(0, 1)); selectMan->calculateSelectionTransformation(); - mEditor->frameModified(mEditor->currentFrame()); + emit mEditor->frameModified(mEditor->currentFrame()); return; case Qt::Key_Return: applyTransformedSelection(); diff --git a/core_lib/src/managers/clipboardmanager.cpp b/core_lib/src/managers/clipboardmanager.cpp index a6ad45da96..cfb1ffb140 100644 --- a/core_lib/src/managers/clipboardmanager.cpp +++ b/core_lib/src/managers/clipboardmanager.cpp @@ -17,6 +17,7 @@ GNU General Public License for more details. #include "clipboardmanager.h" #include +#include #include @@ -32,15 +33,17 @@ ClipboardManager::~ClipboardManager() void ClipboardManager::setFromSystemClipboard(const QPointF& pos, const Layer* layer) { + const QClipboard *clipboard = QGuiApplication::clipboard(); + // We intentially do not call resetStates here because we can only store image changes to the clipboard // otherwise we break pasting for vector. // Only bitmap is supported currently... // Only update clipboard data if it was stored by other applications - if (layer->type() != Layer::BITMAP || mClipboard->ownsClipboard()) { + if (layer->type() != Layer::BITMAP || clipboard->ownsClipboard()) { return; } - QImage image = mClipboard->image(QClipboard::Clipboard); + QImage image = clipboard->image(QClipboard::Clipboard); if (!image.isNull()) { mBitmapImage = BitmapImage(pos.toPoint()-QPoint(image.size().width()/2, image.size().height()/2), image); } @@ -60,7 +63,7 @@ void ClipboardManager::copyBitmapImage(BitmapImage* bitmapImage, QRectF selectio mBitmapImage = bitmapImage->copy(); } - mClipboard->setImage(*mBitmapImage.image()); + QGuiApplication::clipboard()->setImage(*mBitmapImage.image()); } void ClipboardManager::copyVectorImage(const VectorImage* vectorImage) diff --git a/core_lib/src/managers/clipboardmanager.h b/core_lib/src/managers/clipboardmanager.h index 8a2f26f744..04d3b82eea 100644 --- a/core_lib/src/managers/clipboardmanager.h +++ b/core_lib/src/managers/clipboardmanager.h @@ -75,8 +75,6 @@ class ClipboardManager: public BaseManager VectorImage mVectorImage; std::map mFrames; Layer::LAYER_TYPE mFramesType = Layer::LAYER_TYPE::UNDEFINED; - - QClipboard* mClipboard = nullptr; }; #endif // CLIPBOARDMANAGER_H diff --git a/core_lib/src/managers/layermanager.cpp b/core_lib/src/managers/layermanager.cpp index 927988f4b6..59bba305be 100644 --- a/core_lib/src/managers/layermanager.cpp +++ b/core_lib/src/managers/layermanager.cpp @@ -348,7 +348,7 @@ Status LayerManager::renameLayer(Layer* layer, const QString& newName) if (newName.isEmpty()) return Status::FAIL; layer->setName(newName); - currentLayerChanged(getIndex(layer)); + emit currentLayerChanged(getIndex(layer)); return Status::OK; } diff --git a/core_lib/src/managers/toolmanager.cpp b/core_lib/src/managers/toolmanager.cpp index c80e5b6a75..3ebc508e9c 100644 --- a/core_lib/src/managers/toolmanager.cpp +++ b/core_lib/src/managers/toolmanager.cpp @@ -153,7 +153,6 @@ void ToolManager::setWidth(float newWidth) } currentTool()->setWidth(static_cast(newWidth)); - emit penWidthValueChanged(newWidth); emit toolPropertyChanged(currentTool()->type(), WIDTH); } @@ -165,7 +164,6 @@ void ToolManager::setFeather(float newFeather) } currentTool()->setFeather(static_cast(newFeather)); - emit penFeatherValueChanged(newFeather); emit toolPropertyChanged(currentTool()->type(), FEATHER); } @@ -204,6 +202,12 @@ void ToolManager::setBezier(bool isBezierOn) emit toolPropertyChanged(currentTool()->type(), BEZIER); } +void ToolManager::setClosedPath(bool isPathClosed) +{ + currentTool()->setClosedPath(isPathClosed); + emit toolPropertyChanged(currentTool()->type(), CLOSEDPATH); +} + void ToolManager::setPressure(bool isPressureOn) { currentTool()->setPressure(isPressureOn); @@ -233,7 +237,6 @@ void ToolManager::setTolerance(int newTolerance) newTolerance = qMax(0, newTolerance); currentTool()->setTolerance(newTolerance); - emit toleranceValueChanged(newTolerance); emit toolPropertyChanged(currentTool()->type(), TOLERANCE); } diff --git a/core_lib/src/managers/toolmanager.h b/core_lib/src/managers/toolmanager.h index 6ba1cd3321..c6d6227e7a 100644 --- a/core_lib/src/managers/toolmanager.h +++ b/core_lib/src/managers/toolmanager.h @@ -53,10 +53,6 @@ class ToolManager : public BaseManager int propertySwitch(bool condition, int property); signals: - void penWidthValueChanged(float); - void penFeatherValueChanged(float); - void toleranceValueChanged(qreal); - void toolChanged(ToolType); void toolPropertyChanged(ToolType, ToolPropertyType); @@ -65,11 +61,13 @@ public slots: void setWidth(float); void setFeather(float); + void setUseFeather(bool); void setInvisibility(bool); void setPreserveAlpha(bool); void setVectorMergeEnabled(bool); void setBezier(bool); + void setClosedPath(bool); void setPressure(bool); void setAA(int); void setFillMode(int); diff --git a/core_lib/src/structure/filemanager.cpp b/core_lib/src/structure/filemanager.cpp index 4797215f61..5a696af457 100644 --- a/core_lib/src/structure/filemanager.cpp +++ b/core_lib/src/structure/filemanager.cpp @@ -562,7 +562,7 @@ int FileManager::countExistingBackups(const QString& fileName) const const QString& baseName = fileInfo.completeBaseName(); int backupCount = 0; - for (QFileInfo dirFileInfo : directory.entryInfoList(QDir::Filter::Files)) { + for (const QFileInfo &dirFileInfo : directory.entryInfoList(QDir::Filter::Files)) { QString searchFileBaseName = dirFileInfo.completeBaseName(); if (baseName.compare(searchFileBaseName) == 0 && searchFileBaseName.contains(PFF_BACKUP_IDENTIFIER)) { backupCount++; diff --git a/core_lib/src/structure/pegbaraligner.cpp b/core_lib/src/structure/pegbaraligner.cpp index 986bbfb7ec..359edd3fe3 100644 --- a/core_lib/src/structure/pegbaraligner.cpp +++ b/core_lib/src/structure/pegbaraligner.cpp @@ -67,7 +67,7 @@ Status PegBarAligner::align(const QStringList& layers) } img->moveTopLeft(QPoint(img->left() + (pegX - result.point.x()), img->top() + (pegY - result.point.y()))); - mEditor->frameModified(img->pos()); + emit mEditor->frameModified(img->pos()); } } diff --git a/core_lib/src/tool/basetool.cpp b/core_lib/src/tool/basetool.cpp index e8a3f92de3..7abd7f482a 100644 --- a/core_lib/src/tool/basetool.cpp +++ b/core_lib/src/tool/basetool.cpp @@ -54,6 +54,7 @@ BaseTool::BaseTool(QObject* parent) : QObject(parent) mPropertyEnabled.insert(INVISIBILITY, false); mPropertyEnabled.insert(PRESERVEALPHA, false); mPropertyEnabled.insert(BEZIER, false); + mPropertyEnabled.insert(CLOSEDPATH, false); mPropertyEnabled.insert(ANTI_ALIASING, false); mPropertyEnabled.insert(FILL_MODE, false); mPropertyEnabled.insert(STABILIZATION, false); @@ -148,6 +149,11 @@ void BaseTool::setBezier(const bool _bezier_state) properties.bezier_state = _bezier_state; } +void BaseTool::setClosedPath(const bool closed) +{ + properties.closedPolylinePath = closed; +} + void BaseTool::setPressure(const bool pressure) { properties.pressure = pressure; diff --git a/core_lib/src/tool/basetool.h b/core_lib/src/tool/basetool.h index 95ec749a32..bebb118edf 100644 --- a/core_lib/src/tool/basetool.h +++ b/core_lib/src/tool/basetool.h @@ -45,6 +45,7 @@ class Properties int preserveAlpha = 0; bool vectorMergeEnabled = false; bool bezier_state = false; + bool closedPolylinePath = false; bool useFeather = true; int useAA = 0; int fillMode = 0; @@ -107,8 +108,10 @@ class BaseTool : public QObject virtual void setWidth(const qreal width); virtual void setFeather(const qreal feather); + virtual void setInvisibility(const bool invisibility); virtual void setBezier(const bool bezier_state); + virtual void setClosedPath(const bool closed); virtual void setPressure(const bool pressure); virtual void setUseFeather(const bool usingFeather); virtual void setPreserveAlpha(const bool preserveAlpha); diff --git a/core_lib/src/tool/cameratool.cpp b/core_lib/src/tool/cameratool.cpp index 20097a3fbb..e0d1045b89 100644 --- a/core_lib/src/tool/cameratool.cpp +++ b/core_lib/src/tool/cameratool.cpp @@ -438,7 +438,7 @@ void CameraTool::transformView(LayerCamera* layerCamera, CameraMoveType mode, co curCam->modification(); } -void CameraTool::paint(QPainter& painter, const QRect& blitRect) +void CameraTool::paint(QPainter& painter, const QRect&) { int frameIndex = mEditor->currentFrame(); LayerCamera* cameraLayerBelow = static_cast(mEditor->object()->getLayerBelow(mEditor->currentLayerIndex(), Layer::CAMERA)); diff --git a/core_lib/src/tool/cameratool.h b/core_lib/src/tool/cameratool.h index 819fc89893..62501bb1db 100644 --- a/core_lib/src/tool/cameratool.h +++ b/core_lib/src/tool/cameratool.h @@ -51,7 +51,7 @@ class CameraTool : public BaseTool QCursor cursor() override; ToolType type() override { return ToolType::CAMERA; } - void paint(QPainter& painter, const QRect& blitRect) override; + void paint(QPainter& painter, const QRect&) override; void loadSettings() override; diff --git a/core_lib/src/tool/movetool.cpp b/core_lib/src/tool/movetool.cpp index 8d0ce29a06..72e66315c6 100644 --- a/core_lib/src/tool/movetool.cpp +++ b/core_lib/src/tool/movetool.cpp @@ -172,7 +172,7 @@ void MoveTool::pointerReleaseEvent(PointerEvent*) return; mScribbleArea->updateToolCursor(); - mEditor->frameModified(mEditor->currentFrame()); + emit mEditor->frameModified(mEditor->currentFrame()); } void MoveTool::transformSelection(const QPointF& pos, Qt::KeyboardModifiers keyMod) diff --git a/core_lib/src/tool/polylinetool.cpp b/core_lib/src/tool/polylinetool.cpp index 744919963c..4b8e1bcf70 100644 --- a/core_lib/src/tool/polylinetool.cpp +++ b/core_lib/src/tool/polylinetool.cpp @@ -45,6 +45,7 @@ void PolylineTool::loadSettings() mPropertyEnabled[WIDTH] = true; mPropertyEnabled[BEZIER] = true; + mPropertyEnabled[CLOSEDPATH] = true; mPropertyEnabled[ANTI_ALIASING] = true; QSettings settings(PENCIL2D, PENCIL2D); @@ -54,6 +55,7 @@ void PolylineTool::loadSettings() properties.pressure = false; properties.invisibility = OFF; properties.preserveAlpha = OFF; + properties.closedPolylinePath = settings.value("closedPolylinePath").toBool(); properties.useAA = settings.value("brushAA").toBool(); properties.stabilizerLevel = -1; @@ -64,6 +66,7 @@ void PolylineTool::resetToDefault() { setWidth(8.0); setBezier(false); + setClosedPath(false); } void PolylineTool::setWidth(const qreal width) @@ -94,6 +97,16 @@ void PolylineTool::setAA(const int AA) settings.sync(); } +void PolylineTool::setClosedPath(const bool closed) +{ + BaseTool::setClosedPath(closed); + + // Update settings + QSettings settings(PENCIL2D, PENCIL2D); + settings.setValue("closedPolylinePath", closed); + settings.sync(); +} + bool PolylineTool::leavingThisTool() { StrokeTool::leavingThisTool(); @@ -218,6 +231,12 @@ bool PolylineTool::keyPressEvent(QKeyEvent* event) { switch (event->key()) { + case Qt::Key_Control: + mClosedPathOverrideEnabled = true; + drawPolyline(mPoints, getCurrentPoint()); + return true; + break; + case Qt::Key_Return: if (mPoints.size() > 0) { @@ -242,6 +261,23 @@ bool PolylineTool::keyPressEvent(QKeyEvent* event) return BaseTool::keyPressEvent(event); } +bool PolylineTool::keyReleaseEvent(QKeyEvent* event) +{ + switch (event->key()) + { + case Qt::Key_Control: + mClosedPathOverrideEnabled = false; + drawPolyline(mPoints, getCurrentPoint()); + return true; + break; + + default: + break; + } + + return BaseTool::keyReleaseEvent(event); +} + void PolylineTool::drawPolyline(QList points, QPointF endPoint) { if (points.size() > 0) @@ -265,6 +301,12 @@ void PolylineTool::drawPolyline(QList points, QPointF endPoint) } tempPath.lineTo(endPoint); + // Ctrl key inverts closed behavior while held (XOR) + if ((properties.closedPolylinePath == !mClosedPathOverrideEnabled) && points.size() > 1) + { + tempPath.closeSubpath(); + } + // Vector otherwise if (layer->type() == Layer::VECTOR) { diff --git a/core_lib/src/tool/polylinetool.h b/core_lib/src/tool/polylinetool.h index 2cab046636..20699a341e 100644 --- a/core_lib/src/tool/polylinetool.h +++ b/core_lib/src/tool/polylinetool.h @@ -38,12 +38,15 @@ class PolylineTool : public StrokeTool void pointerDoubleClickEvent(PointerEvent*) override; bool keyPressEvent(QKeyEvent* event) override; + bool keyReleaseEvent(QKeyEvent* event) override; void clearToolData() override; void setWidth(const qreal width) override; void setFeather(const qreal feather) override; void setAA(const int AA) override; + void setClosedPath(const bool closed) override; + void removeLastPolylineSegment() override; bool leavingThisTool() override; @@ -52,6 +55,7 @@ class PolylineTool : public StrokeTool private: QList mPoints; + bool mClosedPathOverrideEnabled = false; void drawPolyline(QList points, QPointF endPoint); void cancelPolyline(); diff --git a/core_lib/src/tool/smudgetool.cpp b/core_lib/src/tool/smudgetool.cpp index 9838a8f9d5..075c2a067d 100644 --- a/core_lib/src/tool/smudgetool.cpp +++ b/core_lib/src/tool/smudgetool.cpp @@ -182,7 +182,7 @@ void SmudgeTool::pointerPressEvent(PointerEvent* event) selectMan->vectorSelection.add(selectMan->closestCurves()); selectMan->vectorSelection.add(selectMan->closestVertices()); - mEditor->frameModified(mEditor->currentFrame()); + emit mEditor->frameModified(mEditor->currentFrame()); } else { diff --git a/core_lib/src/tool/stroketool.cpp b/core_lib/src/tool/stroketool.cpp index b3cfa6894c..4ff0c29e43 100644 --- a/core_lib/src/tool/stroketool.cpp +++ b/core_lib/src/tool/stroketool.cpp @@ -331,6 +331,10 @@ void StrokeTool::stopAdjusting() { msIsAdjusting = false; mAdjustPosition = QPointF(); + + mEditor->tools()->setWidth(properties.width); + mEditor->tools()->setFeather(properties.feather); + updateCanvasCursor(); } @@ -343,7 +347,7 @@ void StrokeTool::adjustCursor(Qt::KeyboardModifiers modifiers) // map it back to its original value, we can multiply by the factor we divided with const qreal newValue = QLineF(mAdjustPosition, getCurrentPoint()).length() * 2.0; - mEditor->tools()->setWidth(qBound(WIDTH_MIN, newValue, WIDTH_MAX)); + setTemporaryWidth(qBound(WIDTH_MIN, newValue, WIDTH_MAX)); break; } case FEATHER: { @@ -357,7 +361,7 @@ void StrokeTool::adjustCursor(Qt::KeyboardModifiers modifiers) // We flip min and max here in order to get the inverted value for the UI const qreal mappedValue = MathUtils::map(distance, inputMin, inputMax, outputMax, outputMin); - mEditor->tools()->setFeather(qBound(FEATHER_MIN, mappedValue, FEATHER_MAX)); + setTemporaryFeather(qBound(FEATHER_MIN, mappedValue, FEATHER_MAX)); break; } default: @@ -371,3 +375,25 @@ void StrokeTool::paint(QPainter& painter, const QRect& blitRect) { mCanvasCursorPainter.paint(painter, blitRect); } + +void StrokeTool::setTemporaryWidth(qreal width) +{ + if (std::isnan(width) || width < 0) + { + width = 1.f; + } + + properties.width = width; + emit mEditor->tools()->toolPropertyChanged(this->type(), WIDTH); +} + +void StrokeTool::setTemporaryFeather(qreal feather) +{ + if (std::isnan(feather) || feather < 0) + { + feather = 0.f; + } + + properties.feather = feather; + emit mEditor->tools()->toolPropertyChanged(this->type(), FEATHER); +} diff --git a/core_lib/src/tool/stroketool.h b/core_lib/src/tool/stroketool.h index 63ad63f0a2..8d21fa7090 100644 --- a/core_lib/src/tool/stroketool.h +++ b/core_lib/src/tool/stroketool.h @@ -110,6 +110,12 @@ public slots: CanvasCursorPainter mCanvasCursorPainter; StrokeInterpolator mInterpolator; + +private: + /// Sets the width value without calling settings to store the state + void setTemporaryWidth(qreal width); + /// Sets the feather value, without calling settings to store the state + void setTemporaryFeather(qreal feather); }; #endif // STROKETOOL_H diff --git a/core_lib/src/util/pencildef.h b/core_lib/src/util/pencildef.h index 1d1f1ba3e2..bcd046e16f 100644 --- a/core_lib/src/util/pencildef.h +++ b/core_lib/src/util/pencildef.h @@ -53,6 +53,7 @@ enum ToolPropertyType INVISIBILITY, PRESERVEALPHA, BEZIER, + CLOSEDPATH, USEFEATHER, VECTORMERGE, ANTI_ALIASING, @@ -124,15 +125,19 @@ const static int MaxFramesBound = 9999; #define CMD_SAVE_AS "CmdSaveAs" #define CMD_IMPORT_IMAGE "CmdImportImage" #define CMD_IMPORT_IMAGE_SEQ "CmdImportImageSequence" +#define CMD_IMPORT_IMAGE_PREDEFINED_SET "CmdImportImagePredefinedSet" #define CMD_IMPORT_MOVIE_VIDEO "CmdImportMovieVideo" +#define CMD_IMPORT_ANIMATED_IMAGE "CmdImportAnimatedImage" +#define CMD_IMPORT_LAYERS "CmdImportLayers" +#define CMD_IMPORT_SOUND "CmdImportSound" #define CMD_IMPORT_MOVIE_AUDIO "CmdImportMovieAudio" #define CMD_IMPORT_PALETTE "CmdImportPalette" -#define CMD_IMPORT_SOUND "CmdImportSound" +#define CMD_IMPORT_PALETTE_REPLACE "CmdImportPaletteReplace" #define CMD_EXPORT_IMAGE_SEQ "CmdExportImageSequence" #define CMD_EXPORT_IMAGE "CmdExportImage" #define CMD_EXPORT_MOVIE "CmdExportMovie" +#define CMD_EXPORT_GIF "CmdExportGIF" #define CMD_EXPORT_PALETTE "CmdExportPalette" -#define CMD_EXPORT_SOUND "CmdExportSound" #define CMD_UNDO "CmdUndo" #define CMD_REMOVE_LAST_POLYLINE_SEGMENT "CmdRemoveLastPolylineSegment" #define CMD_REDO "CmdRedo" @@ -143,8 +148,10 @@ const static int MaxFramesBound = 9999; #define CMD_SELECT_ALL "CmdSelectAll" #define CMD_DESELECT_ALL "CmdDeselectAll" #define CMD_CLEAR_FRAME "CmdClearFrame" +#define CMD_PEGBAR_ALIGNMENT "CmdPegBarAlignment" #define CMD_PREFERENCE "CmdPreferences" #define CMD_RESET_WINDOWS "CmdResetWindows" +#define CMD_LOCK_WINDOWS "CmdLockWindows" #define CMD_ZOOM_IN "CmdZoomIn" #define CMD_ZOOM_OUT "CmdZoomOut" #define CMD_ROTATE_CLOCK "CmdRotateClockwise" @@ -161,13 +168,20 @@ const static int MaxFramesBound = 9999; #define CMD_ZOOM_25 "CmdZoom25" #define CMD_FLIP_HORIZONTAL "CmdFlipHorizontal" #define CMD_FLIP_VERTICAL "CmdFlipVertical" -#define CMD_PREVIEW "CmdPreview" #define CMD_GRID "CmdGrid" +#define CMD_OVERLAY_CENTER "CmdOverlayCenter" +#define CMD_OVERLAY_THIRDS "CmdOverlayThirds" +#define CMD_OVERLAY_GOLDEN_RATIO "CmdOverlayGoldenRatio" +#define CMD_OVERLAY_SAFE_AREAS "CmdOverlaySafeAreas" +#define CMD_OVERLAY_ONE_POINT_PERSPECTIVE "CmdOverlayOnePointPerspective" +#define CMD_OVERLAY_TWO_POINT_PERSPECTIVE "CmdOverlayTwoPointPerspective" +#define CMD_OVERLAY_THREE_POINT_PERSPECTIVE "CmdOverlayThreePointPerspective" #define CMD_ONIONSKIN_PREV "CmdOnionSkinPrevious" #define CMD_ONIONSKIN_NEXT "CmdOnionSkinNext" #define CMD_TOGGLE_STATUS_BAR "CmdToggleStatusBar" #define CMD_PLAY "CmdPlay" #define CMD_LOOP "CmdLoop" +#define CMD_LOOP_CONTROL "CmdLoopControl" #define CMD_FLIP_INBETWEEN "CmdFlipInBetween" #define CMD_FLIP_ROLLING "CmdFlipRolling" #define CMD_GOTO_NEXT_FRAME "CmdGotoNextFrame" @@ -179,6 +193,7 @@ const static int MaxFramesBound = 9999; #define CMD_REMOVE_FRAME "CmdRemoveFrame" #define CMD_REVERSE_SELECTED_FRAMES "CmdReverseSelectedFrames" #define CMD_REMOVE_SELECTED_FRAMES "CmdRemoveSelectedFrames" +#define CMD_SELECTION_REPOSITION_FRAMES "CmdSelectionRepositionFrames" #define CMD_SELECTION_ADD_FRAME_EXPOSURE "CmdSelectionAddFrameExposure" #define CMD_SELECTION_SUBTRACT_FRAME_EXPOSURE "CmdSelectionSubtractFrameExposure" #define CMD_SELECTION_FLIP_HORIZONTAL "CmdSelectionFlipHorizontal" @@ -196,11 +211,15 @@ const static int MaxFramesBound = 9999; #define CMD_TOOL_BUCKET "CmdToolBucket" #define CMD_TOOL_EYEDROPPER "CmdToolEyedropper" #define CMD_TOOL_ERASER "CmdToolEraser" +#define CMD_RESET_ALL_TOOLS "CmdResetAllTools" #define CMD_NEW_BITMAP_LAYER "CmdNewBitmapLayer" #define CMD_NEW_VECTOR_LAYER "CmdNewVectorLayer" #define CMD_NEW_SOUND_LAYER "CmdNewSoundLayer" #define CMD_NEW_CAMERA_LAYER "CmdNewCameraLayer" #define CMD_DELETE_CUR_LAYER "CmdDeleteCurrentLayer" +#define CMD_CHANGE_LINE_COLOR_KEYFRAME "CmdChangeLineColorKeyframe" +#define CMD_CHANGE_LINE_COLOR_LAYER "CmdChangeLineColorLayer" +#define CMD_CHANGE_LAYER_OPACITY "CmdChangeLayerOpacity" #define CMD_CURRENT_LAYER_VISIBILITY "CmdLayerVisibilityCurrentOnly" #define CMD_RELATIVE_LAYER_VISIBILITY "CmdLayerVisibilityRelative" #define CMD_ALL_LAYER_VISIBILITY "CmdLayerVisibilityAll" diff --git a/translations/pencil.ts b/translations/pencil.ts index 3f4548d56b..6d61487b49 100644 --- a/translations/pencil.ts +++ b/translations/pencil.ts @@ -281,17 +281,17 @@ BucketOptionsWidget - + Form - + Reference - + Blend mode @@ -690,83 +690,83 @@ CameraOptionsWidget - + Transform - + Reset scaling - + Reset rotation - + Reset - + Reset translation - + Reset all transforms - + Reset all - + Camera path - + Show interpolation path - + Show path - + Red - + Blue - + Green - + Black - + White - - + + Reset path @@ -876,60 +876,60 @@ ColorInspector - + HSV - + H - + S - + V - - + + A - + ° - - - + + + % - + RGB - + G - + B - + R @@ -943,23 +943,23 @@ ColorPalette - + Color Palette Window title of color palette. - + Add Color - + Remove Color - + Native color dialog window @@ -3005,11 +3005,6 @@ Export movie - - - Export sound - - Export palette @@ -3262,147 +3257,147 @@ GeneralPage - + Language GroupBox title in Preference - - + + [System-Language] First item of the language list - + Window opacity GroupBox title in Preference - + Opacity - + Appearance GroupBox title in Preference - + Shadows - + Tool Cursors - + Canvas Cursor - + Background GroupBox title in Preference - + Canvas GroupBox title in Preference - + Antialiasing - + Editing GroupBox title in Preference - + Vector curve smoothing - + Tablet high-resolution position - + Grid groupBox title in Preference - + Grid Height - + Enable Grid - + Grid Width - + Overlays - + Enable Action Safe area (%) - + Enable Title Safe area (%) - + Show Safe area labels - + Scroll Wheel Zoom - + Invert Scroll Direction - + Advanced groupBox title in Preference - + Memory Cache Budget - + MB @@ -3640,23 +3635,23 @@ The importer will search and find images matching the same criteria. You can see - + Abort - + Importing images... - - + + Invalid path - + The following file did not meet the criteria: %1 @@ -3664,7 +3659,7 @@ Read the instructions and try again - + The following file(-s) did not meet the criteria: %1 @@ -3850,22 +3845,22 @@ Read the instructions and try again - + Fade out over selected keyframes - + Fade out - + Close - + Be aware that opacity changes are made in the rendering, and will not change your artwork. @@ -3954,833 +3949,828 @@ Read the instructions and try again - + Animation - + Timeline Selection - + Tools - + Layer - + Change line color - - + + Help - + Windows - + Toolbars - + New - + Open - + Save - + Save As... - + Exit - - + + Image Sequence... - - + + Image... - + Movie... - + Palette - + Movie Video... - + Sound... - + Image Predefined set... - + Undo - + Redo - + Cut - + Copy - + Paste - + Center To move sth. to the center - - + + Paste from Previous Keyframe - + Show Invisible Lines - + Show Outlines Only - + Center The middle point of an area - + Thirds - + Golden Ratio - + Safe Areas - + One Point Perspective - + Two Point Perspective - + Three Point Perspective - + - + - + - + 7.5° - + 10° - + 15° - + 20° - + 30° - + Select All - + Deselect All - + Clear Frame - + Preferences - + Reset Windows - + Zoom In - + Zoom Out - + Rotate Clockwise - + Rotate Anticlockwise - + Reset - + Horizontal Flip - + Vertical Flip - - Preview - - - - + Grid - + Previous - + Show previous onion skin - + Next - + Show next onion skin - - + + Play - + Loop - + Next Frame - + Previous Frame - + Add Frame - + Duplicate Frame - + Remove Frame - + Move - + Select - + Brush - + Polyline - + Smudge - + Pen - + Hand - + Pencil - + Bucket - + Eyedropper - + Eraser - + New Bitmap Layer - + New Vector Layer - + New Sound Layer - + New Camera Layer - + Delete Current Layer - + About - - + + Reset to default - - + + Next Keyframe - - + + Previous KeyFrame - + Range - + Flip X - + Flip Y - + Move Frame Forward - + Move Frame Backward - + Pencil2D Website - + Report a Bug - + Quick Reference Guide - + F1 - + Animated Image... - + Animated GIF... - + Check for Updates - + Pencil2D Forum - + Pencil2D Discord - + 200% - + 300% - + 400% - + 50% - + 33% - + 25% - + 100% - + Flip In-Between - + Flip Rolling - + Current layer only - + Relative - + Peg bar Alignment - + Movie Audio... - + Append to Palette... - + Replace Palette... - + Current keyframe - + All keyframes on layer - + Layers from Project file... - + All layers - + Reposition Selected Frames - + Layer / Keyframe opacity - + Open Temporary Directory - + Lock Windows - + Reset Rotation - + Add Exposure - + Subtract Exposure - + Reverse Frames Order - + Remove Frames - + Status Bar - + color palette:<br>use <b>(C)</b><br>toggle at cursor - + Color inspector - + Open Recent - - + + Dialog is already open! - + Please select at least 2 frames! - + Opening document... - - + + Abort - - + + Warning - + This program does not currently have permission to write to the file you have selected. Please make sure you have write permission for this file before attempting to save it. Alternatively, you can use the Save As... menu option to save to a writable location. - + Saving document... - + <br><br>An error has occurred and your file may not have saved successfully.If you believe that this error is an issue with Pencil2D, please create a new issue at:<br><a href='https://github.com/pencil2d/pencil/issues'>https://github.com/pencil2d/pencil/issues</a><br>Please be sure to include the following details in your issue: - + This animation has been modified. Do you want to save your changes? - + AutoSave Reminder - + The animation is not saved yet. Do you want to save now? - + Never ask again AutoSave reminder button - - + + Undo Menu item text - - + + Redo Menu item text - + Opening a palette will replace the old palette. Color(s) in strokes will be altered by this action! - + Open Palette - + Stop - + Restore Project? - + Pencil2D didn't close correctly. Would you like to restore the project? - + Restore project - + Recovery Failed. - + Sorry! Pencil2D is unable to restore your project - + Recovery Succeeded! - + Please save your work immediately to prevent loss of data - + Main Toolbar - + View Toolbar - + Overlay Toolbar @@ -5070,61 +5060,61 @@ Color(s) in strokes will be altered by this action! - + Previous Frames - - + + ... - - + + Onion skin color: red - + Next Frames - - + + Onion skin color: blue - + Distributed Opacity - + Min - - + + % - + Max - + Show Keyframes Only - + Show During Playback @@ -5245,32 +5235,32 @@ Check selection, and please try again. PreferencesDialog - + Preferences - + General - + Files - + Timeline - + Tools - + Shortcuts @@ -5560,15 +5550,9 @@ or cancel Shortcut - - - Export Palette - Shortcut - - - Export Sound + Export Palette Shortcut @@ -5590,6 +5574,12 @@ or cancel Shortcut + + + Export Animated GIF + Shortcut + + View: Vertical Flip @@ -5634,396 +5624,522 @@ or cancel - Selection: Add Frame Exposure + Selection: Reposition Frames Shortcut - Selection: Subtract Frame Exposure + Selection: Add Frame Exposure Shortcut - Selection: Reverse Keyframes + Selection: Subtract Frame Exposure Shortcut - Selection: Remove Keyframes + Selection: Reverse Keyframes Shortcut - Toggle Grid + Selection: Remove Keyframes Shortcut - Import Image + Toggle Grid Shortcut - Import Image Sequence + Toggle Center Overlay Shortcut - Import Sound + Toggle Thirds Overlay Shortcut - Show All Layers + Toggle Golden Ratio Overlay Shortcut - Show Current Layer Only + Toggle Safe Areas Overlay Shortcut - Show Layers Relative to Current Layer + Toggle One Point Perspective Overlay Shortcut - Toggle Loop + Toggle Two Point Perspective Overlay Shortcut - Move Frame Backward + Toggle Three Point Perspective Overlay Shortcut - Move Frame Forward + Import Image Shortcut - New Bitmap Layer + Import Image Sequence Shortcut - New Camera Layer + Import Image Predefined Set Shortcut - New File + Import Movie Video Shortcut - New Sound Layer + Import Movie Audio Shortcut - New Vector Layer + Import Animated Image Shortcut - Toggle Next Onion Skin + Import Layers from project file Shortcut - Toggle Previous Onion Skin + Import Palette (Append) Shortcut - Open File + Import Palette (Replace) Shortcut - Paste + Import Sound Shortcut - Play/Stop + Show All Layers Shortcut - Preferences + Show Current Layer Only Shortcut - Preview + Show Layers Relative to Current Layer Shortcut - Redo + Toggle Loop Shortcut - Remove Frame + Toggle Range Playback Shortcut - Reset Windows + Move Frame Backward Shortcut - Reset View + Move Frame Forward Shortcut - Center View + New Bitmap Layer Shortcut - Rotate Anticlockwise + New Camera Layer Shortcut - Rotate Clockwise + New File Shortcut - Reset Rotation + New Sound Layer Shortcut - Save File As + New Vector Layer Shortcut - Save File + Toggle Next Onion Skin Shortcut - Select All + Toggle Previous Onion Skin Shortcut - Toggle Status Bar Visibility + Open File Shortcut - Toggle Color Inspector Window Visibility + Paste Shortcut - Toggle Color Palette Window Visibility + Play/Stop Shortcut - Toggle Color Box Window Visibility + Peg bar Alignment Shortcut - Toggle Onion Skins Window Visibility + Preferences Shortcut - Toggle Timeline Window Visibility + Redo Shortcut - Toggle Tools Window Visibility + Remove Frame Shortcut - Toggle Options Window Visibility + Reset Windows Shortcut - Brush Tool + Lock Windows Shortcut - Bucket Tool + Reset View Shortcut - Eraser Tool + Center View Shortcut - Eyedropper Tool + Rotate Anticlockwise Shortcut - Hand Tool + Rotate Clockwise Shortcut - Move Tool + Reset Rotation Shortcut - Pen Tool + Save File As Shortcut - Pencil Tool + Save File Shortcut - Polyline Tool + Select All Shortcut - Select Tool + Toggle Status Bar Visibility Shortcut - Smudge Tool + Toggle Color Inspector Window Visibility Shortcut - Undo + Toggle Color Palette Window Visibility Shortcut - Set Zoom to 100% + Toggle Color Box Window Visibility Shortcut - Set Zoom to 200% + Toggle Onion Skins Window Visibility Shortcut - Set Zoom to 25% + Toggle Timeline Window Visibility Shortcut - Set Zoom to 300% + Toggle Tools Window Visibility Shortcut - Set Zoom to 33% + Toggle Options Window Visibility Shortcut - Set Zoom to 400% + Brush Tool Shortcut - Set Zoom to 50% + Bucket Tool Shortcut - Zoom In + Eraser Tool Shortcut + Eyedropper Tool + Shortcut + + + + + Hand Tool + Shortcut + + + + + Move Tool + Shortcut + + + + + Pen Tool + Shortcut + + + + + Pencil Tool + Shortcut + + + + + Polyline Tool + Shortcut + + + + + Select Tool + Shortcut + + + + + Smudge Tool + Shortcut + + + + + Reset all tools to default + Shortcut + + + + + Change Line Color (Current keyframe) + Shortcut + + + + + Change Line Color (All keyframes on layer) + Shortcut + + + + + Change Layer / Keyframe Opacity + Shortcut + + + + + Undo + Shortcut + + + + + Set Zoom to 100% + Shortcut + + + + + Set Zoom to 200% + Shortcut + + + + + Set Zoom to 25% + Shortcut + + + + + Set Zoom to 300% + Shortcut + + + + + Set Zoom to 33% + Shortcut + + + + + Set Zoom to 400% + Shortcut + + + + + Set Zoom to 50% + Shortcut + + + + + Zoom In + Shortcut + + + + Zoom Out Shortcut @@ -6254,84 +6370,84 @@ or cancel TimeLine - + Timeline Subpanel title - + Layers: - + Add Layer - + Delete Layer - + Duplicate Layer - + New Bitmap Layer - + New Vector Layer - + New Sound Layer - + New Camera Layer - + Layer Timeline add-layer menu - + Keys: - + Add Frame - + Remove Frame - + Duplicate Frame - + Zoom: - + Adjust frame width @@ -6339,12 +6455,12 @@ or cancel TimeLineCells - + Layer Properties - + Layer name: @@ -6403,67 +6519,67 @@ or cancel - + <html><head/><body><p>(Applies to Pencil, Eraser, Pen, Polyline, Bucket and Brush tools)</p></body></html> - + Flip and Roll - + Maximum numbers of drawings in roll - + Msecs per drawing in flip inbetween - + Msecs per drawing in flip roll - + Sound scrub - + ms - + Layer Visibility - + Startup option - + Current layer only - + Relative - + All Layers - + When layer visibility is relative (gray dot) @@ -6602,7 +6718,7 @@ or cancel - + Width @@ -6615,141 +6731,151 @@ or cancel ToolOptions - + Form - + Set Stroke Width <br><b>[SHIFT]+drag</b><br>for quick adjustment - + Set Stroke Feather <br><b>[CTRL]+drag</b><br>for quick adjustment - + Enable or disable feathering - + Use Feather - + Show Size and Diff. - + Contour will be filled - + Fill Contour - + + Close Polyline path (hold Ctrl to temporarily invert) + + + + + Closed Path + + + + Use Bézier curves to create curved lines - + Bézier Tool options - + Vary strokes based on pressure when drawing on a tablet - + Pressure Tool options - + Use anti-aliasing to create smooth edges - + Anti-Aliasing Brush AA - + Make invisible - + Invisible Tool options - + Preserve Alpha - + Alpha Tool options - + Merge vector lines when they are close together - + Merge Vector line merge (Tool options) - + Stabilizer - + Use stabilizer to interpolate strokes - + None Stablizer level - + None Stabilizer option - + Simple Stabilizer option - + Strong Stabilizer option diff --git a/translations/pencil_ar.ts b/translations/pencil_ar.ts index 2bf3c1892e..f0667cc67b 100644 --- a/translations/pencil_ar.ts +++ b/translations/pencil_ar.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path مسار حفظ غير جائز - + The path is empty. - + The path ("%1") points to a directory. المسار ("%1") يؤدي الى دليل (مجلد). - + The directory ("%1") does not exist. الدليل ("%1") غير موجود. - + The path ("%1") is not writable. المسار ("%1") لا يمكن الكتابة فيه. - - + + Cannot Create Data Directory لم نستطع إنشاء دليل البيانات - + Failed to create directory "%1". Please make sure you have sufficient permissions. فشل إنشاء الدليل "%1". الرجاء التأكد أن لديك صلاحيات كافية. - + "%1" is a file. Please delete the file and try again. "%1" هو ملف. الرجاء إزالة الملف والمحاولة مرة أخرى. - + Miniz Error خطأ Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. حدث خطأ داخلي. قد لا يكون ملف حفظ بنجاح. - - + + Internal Error خطأ داخلي - + Could not open file لم نستطع فتح الملف - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer طبقة صوت diff --git a/translations/pencil_bg.ts b/translations/pencil_bg.ts index 0050ec123f..b3260a3b27 100644 --- a/translations/pencil_bg.ts +++ b/translations/pencil_bg.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Невалидно файлово местоположение за запис - + The path is empty. Папката е празна. - + The path ("%1") points to a directory. - + The directory ("%1") does not exist. - + The path ("%1") is not writable. - - + + Cannot Create Data Directory Не можахме да създадем файлово местоположение с данни - + Failed to create directory "%1". Please make sure you have sufficient permissions. - + "%1" is a file. Please delete the file and try again. - + Miniz Error - - - + + + An internal error occurred. Your file may not be saved successfully. - - + + Internal Error Възникна грешка - + Could not open file Файлът не можа да се отвори - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 Слой за растерна графика %1 - + Vector Layer %1 Слой за вектори %1 - + Sound Layer %1 Слой за аудио %1 @@ -3877,7 +3877,7 @@ Read the instructions and try again LayerSound - + Sound Layer Слой за звук diff --git a/translations/pencil_ca.ts b/translations/pencil_ca.ts index b8ac2ce696..5568c5fc9c 100644 --- a/translations/pencil_ca.ts +++ b/translations/pencil_ca.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Camí invàlid - + The path is empty. - + The path ("%1") points to a directory. La direcció de l'arxiu ("%1") apunta a una carpeta. - + The directory ("%1") does not exist. El directori seleccionat ("%1") no existeix. - + The path ("%1") is not writable. El camí ("%1") no es pot escriure. - - + + Cannot Create Data Directory No es pot crear Directori de dades - + Failed to create directory "%1". Please make sure you have sufficient permissions. Error en la creació del directori "%1". Si us plau, assegureu-vos que tenen els permissos necessaris. - + "%1" is a file. Please delete the file and try again. "%1" és un arxiu. Si us plau, elimineu l'arxiu i intenteu-ho de nou. - + Miniz Error Error Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. S'ha produït un error intern. Potser que l'arxiu no s'hagi guardat correctament. - - + + Internal Error Error inter - + Could not open file No es pot obrir l'arxiu - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer Capa de so diff --git a/translations/pencil_cs.ts b/translations/pencil_cs.ts index 48066db6ff..f2cef6725a 100644 --- a/translations/pencil_cs.ts +++ b/translations/pencil_cs.ts @@ -2778,7 +2778,7 @@ WEBP - + WEBP @@ -3094,99 +3094,99 @@ FileManager - - - - + + + + Invalid Save Path Neplatná ukládací cesta - + The path is empty. Cesta je prázdná. - + The path ("%1") points to a directory. Cesta ("%1") ukazuje na adresář. - + The directory ("%1") does not exist. Adresář ("%1") neexistuje. - + The path ("%1") is not writable. Cesta ("%1") není zapisovatelná. - - + + Cannot Create Data Directory Nelze vytvořit adresář s daty - + Failed to create directory "%1". Please make sure you have sufficient permissions. Nepodařilo se vytvořit adresář "%1". Ujistěte se, prosím, že máte dostatečná oprávnění. - + "%1" is a file. Please delete the file and try again. "%1" je soubor. Smažte, prosím, soubor a zkuste to znovu. - + Miniz Error Chyba Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Vyskytla se vnitřní chyba. Soubor se nemuselo podařit uložit úspěšně. - - + + Internal Error Vnitřní chyba - + Could not open file Nepodařilo se otevřít soubor - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. Soubor není, takže jej nelze otevřít. Podívejte se, prosím, a ujistěte se, že je cesta správná a zkuste to znovu. - + No permission to read the file. Please check you have read permissions for this file and try again. Nemáte oprávnění číst soubor. Ověřte, prosím, že máte oprávnění k tomuto souboru a zkuste to znovu. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: Při zpracování souboru se vyskytla chyba. Obyčejně to znamená, že váš projekt byl alespoň částečně poškozen. Zkuste to znovu s novou verzí Pencil2D, nebo vyzkoušejte použití záložního souboru, pokud nějaký máte. Pokud se s námi spojíte přes jeden z našich veřejných kanálů, můžeme vám být schopni pomoci. Pro hlášení potíží jsou nejlepšími místy, jak nás dosáhnout: - + Bitmap Layer %1 Bitmapová vrstva %1 - + Vector Layer %1 Vektorová vrstva %1 - + Sound Layer %1 Zvuková vrstva %1 @@ -3882,7 +3882,7 @@ Přečtěte si pokyny a zkuste to znovu LayerSound - + Sound Layer Zvuková vrstva diff --git a/translations/pencil_da.ts b/translations/pencil_da.ts index 2d149c9c07..77006a129c 100644 --- a/translations/pencil_da.ts +++ b/translations/pencil_da.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Ugyldig sti til Gem - + The path is empty. Stien er tom. - + The path ("%1") points to a directory. Stien ("%1") peger på en folder. - + The directory ("%1") does not exist. Folderen ("%1") eksisterer ikke. - + The path ("%1") is not writable. Stien ("%1") kan ikke skrives til. - - + + Cannot Create Data Directory Kan ikke oprette datafolder - + Failed to create directory "%1". Please make sure you have sufficient permissions. Kunne ikke oprette folderen "%1". Vær sikker på at du har de fornødne skriverettigheder. - + "%1" is a file. Please delete the file and try again. "%1" er en fil. Slet venligst filen og prøv igen. - + Miniz Error Miniz fejl - - - + + + An internal error occurred. Your file may not be saved successfully. En intern fejl skete. Din fil er måske ikke gemt. - - + + Internal Error Intern fejl - + Could not open file Kunne ikke åbne fil - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. Filen eksisterer ikke, og kan derfor ikke åbnes. Kontroller venligst om stien er rigtig og prøv igen. - + No permission to read the file. Please check you have read permissions for this file and try again. Har ikke tilladelse til at læse filen. Kontroller om du har læserettigheder til filen og prøv igen. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: Der var en fejl ved læsning af filen. Det betyder at der formentlig er en fejl i filen. Prøv igen med en nyere version af Pencil2D, eller prøv en backup fil hvis du har en. HVis du kantakter os gennem en af vores officielle kanaler kan vi måske hjælpe. Vil du rapportere en fejl kan vi bedst findes her: - + Bitmap Layer %1 Bitmap lag %1 - + Vector Layer %1 Vektor lag 1% - + Sound Layer %1 Lyd lag %1 @@ -3881,7 +3881,7 @@ Læs instruktionerne og prøv igen LayerSound - + Sound Layer Lyd Lag diff --git a/translations/pencil_de.ts b/translations/pencil_de.ts index 87ad22eff0..87de0a8968 100644 --- a/translations/pencil_de.ts +++ b/translations/pencil_de.ts @@ -3094,99 +3094,99 @@ FileManager - - - - + + + + Invalid Save Path Ungültiger Speicherpfad - + The path is empty. Der Pfad ist leer. - + The path ("%1") points to a directory. Der Pfad („%1“) zeigt auf ein Verzeichnis. - + The directory ("%1") does not exist. Das Verzeichnis („%1“) existiert nicht. - + The path ("%1") is not writable. Der Pfad („%1“) ist nicht beschreibbar. - - + + Cannot Create Data Directory Kann Datenverzeichnis nicht erstellen - + Failed to create directory "%1". Please make sure you have sufficient permissions. Das Verzeichnis "%1" konnte nicht erstellt werden. Bitte stellen Sie sicher, dass Sie ausreichende Berechtigungen haben. - + "%1" is a file. Please delete the file and try again. „%1“ ist eine Datei. Bitte löschen Sie die Datei und versuchen Sie es noch einmal. - + Miniz Error Miniz-Fehler - - - + + + An internal error occurred. Your file may not be saved successfully. Ein interner Fehler ist aufgetreten. Ihre Datei wurde möglicherweise nicht erfolgreich gespeichert. - - + + Internal Error Interner Fehler - + Could not open file Konnte Datei nicht öffnen - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. Die Datei existiert nicht, daher können wir Sie nicht öffnen. Bitte versichern Sie sich, dass der Dateipfad korrekt ist, und versuchen Sie es noch einmal. - + No permission to read the file. Please check you have read permissions for this file and try again. Keine Berechtigung zum Lesen der Datei. Bitte prüfen Sie, dass Sie Leseberechtigungen für diese Datei haben und versuchen Sie es noch einmal. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: Bei der Verarbeitung Ihrer Datei ist ein Fehler aufgetreten. Dies bedeutet in der Regel, dass Ihr Projekt zumindest teilweise beschädigt ist. Versuchen Sie es mit einer neueren Version von Pencil2D noch einmal oder versuchen Sie, eine Sicherungsdatei zu verwenden, falls Sie eine haben. Wenn Sie uns über einen unserer offiziellen Kanäle kontaktieren, können wir Ihnen möglicherweise helfen. Für die Meldung von Problemen erreichen Sie uns am besten an den folgenden Anlaufstellen: - + Bitmap Layer %1 Rasterbild-Ebene %1 - + Vector Layer %1 Vektor-Ebene %1 - + Sound Layer %1 Ton-Ebene %1 @@ -3377,7 +3377,7 @@ Show Safe area labels - Beschriftung für Schutzbereiche anzeigen + Beschriftungen für Schutzbereiche anzeigen @@ -3883,7 +3883,7 @@ Lesen Sie die Anleitungen und versuchen es noch einmal. LayerSound - + Sound Layer Ton-Ebene diff --git a/translations/pencil_el.ts b/translations/pencil_el.ts index 5630794bda..79c0ae36aa 100644 --- a/translations/pencil_el.ts +++ b/translations/pencil_el.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Μη έγκυρη διαδρομή αρχείου - + The path is empty. - + The path ("%1") points to a directory. Η διαδρομή ("%1") οδηγεί σε κατάλογο. - + The directory ("%1") does not exist. Ο κατάλογος ("%1") δεν υπάρχει. - + The path ("%1") is not writable. Η διαδρομή ("%1") δεν είναι εγγράψιμη. - - + + Cannot Create Data Directory Δεν είναι δυνατή η δημιουργία καταλόγου δεδομένων - + Failed to create directory "%1". Please make sure you have sufficient permissions. Αποτυχία δημιουργίας καταλόγου "%1". Παρακαλώ ελέγξτε εάν έχετε αρκετές άδειες χρήσης. - + "%1" is a file. Please delete the file and try again. Το "%1" είναι ένα αρχείο. Παρακαλώ διαγράψτε το αρχείο και προσπαθήστε ξανά. - + Miniz Error Σφάλμα Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Προέκυψε εσωτερικό σφάλμα. Το αρχείο σας ίσως δεν αποθηκευτεί επιτυχώς. - - + + Internal Error Εσωτερικό σφάλμα - + Could not open file Αδυναμία ανοίγματος αρχείου - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer Στρώμα ήχου diff --git a/translations/pencil_en.ts b/translations/pencil_en.ts index 3d276d331b..948ba91cb4 100644 --- a/translations/pencil_en.ts +++ b/translations/pencil_en.ts @@ -3094,99 +3094,99 @@ FileManager - - - - + + + + Invalid Save Path Invalid Save Path - + The path is empty. The path is empty. - + The path ("%1") points to a directory. The path ("%1") points to a directory. - + The directory ("%1") does not exist. The directory ("%1") does not exist. - + The path ("%1") is not writable. The path ("%1") is not writable. - - + + Cannot Create Data Directory Cannot Create Data Directory - + Failed to create directory "%1". Please make sure you have sufficient permissions. Failed to create directory "%1". Please make sure you have sufficient permissions. - + "%1" is a file. Please delete the file and try again. "%1" is a file. Please delete the file and try again. - + Miniz Error Miniz Error - - - + + + An internal error occurred. Your file may not be saved successfully. An internal error occurred. Your file may not be saved successfully. - - + + Internal Error Internal Error - + Could not open file Could not open file - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 Bitmap Layer %1 - + Vector Layer %1 Vector Layer %1 - + Sound Layer %1 Sound Layer %1 @@ -3882,7 +3882,7 @@ Read the instructions and try again LayerSound - + Sound Layer Sound Layer diff --git a/translations/pencil_es.ts b/translations/pencil_es.ts index c4936fc8fa..7597449c07 100644 --- a/translations/pencil_es.ts +++ b/translations/pencil_es.ts @@ -3095,99 +3095,99 @@ el archivo sea una imagen y prueba otra vez. FileManager - - - - + + + + Invalid Save Path Camino inválido - + The path is empty. La ruta está vacía. - + The path ("%1") points to a directory. La dirección del archivo ("%1") apunta a una carpeta - + The directory ("%1") does not exist. El directorio en ("%1") no existe - + The path ("%1") is not writable. El camino ("%1") no se puede escribir. - - + + Cannot Create Data Directory No se puede crear Directorio de datos - + Failed to create directory "%1". Please make sure you have sufficient permissions. Fallo al crear directorio "%1". Por favor asegúrese de que tiene los permisos necesarios. - + "%1" is a file. Please delete the file and try again. "%1" es un archivo. Por favor elimine el archivo y vuelva a intentarlo - + Miniz Error Falla Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Ha ocurrido una falla interna. Puede que el archivo no se haya grabado correctamente. - - + + Internal Error Falla interna - + Could not open file No se pudo abrir el archivo - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: Hubo un error procesando su archivo, usualmente significa que su proyecto ha sido parcialmente corrupto, Intente otra vez con una nueva versión de Pencil2D, o intente usar un archivo de respaldo (si tiene alguno), si nos contacta a través de alguno de nuestros canales oficiales podrecemos ayudarle, para reportar problemas, la mejor forma de hacerlo es: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3883,7 +3883,7 @@ Lea las instrucciones y vuela a intentarlo LayerSound - + Sound Layer Capa de Sonido diff --git a/translations/pencil_et.ts b/translations/pencil_et.ts index 56637787aa..c9eb0756fc 100644 --- a/translations/pencil_et.ts +++ b/translations/pencil_et.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Vigane salvestamise asukoht - + The path is empty. - + The path ("%1") points to a directory. Asukoht ("%1") viitab kaustale. - + The directory ("%1") does not exist. Kausta ("%1") pole olemas. - + The path ("%1") is not writable. Kaust ("%1") pole kirjutatav. - - + + Cannot Create Data Directory Andmete kausta loomine ebaõnnestus - + Failed to create directory "%1". Please make sure you have sufficient permissions. Kausta "%1" loomine ebaõnnestus. Palun veendu, et sul oleks piisavalt õiguseid. - + "%1" is a file. Please delete the file and try again. "%1" on fail. Palun kustuta see fail ja proovi siis uuesti. - + Miniz Error - - - + + + An internal error occurred. Your file may not be saved successfully. Tekkis sisemine tõrge. Võimalik, et sinu faili ei salvestatud korrektselt. - - + + Internal Error Sisemine tõrge - + Could not open file Faili avamine ebaõnnestus - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer Helikiht diff --git a/translations/pencil_fa.ts b/translations/pencil_fa.ts index 88f3875047..fb2cc16dea 100644 --- a/translations/pencil_fa.ts +++ b/translations/pencil_fa.ts @@ -3094,99 +3094,99 @@ FileManager - - - - + + + + Invalid Save Path مسیر ذخره سازی نامعتبر - + The path is empty. این مسیر خالی هست. - + The path ("%1") points to a directory. - + The directory ("%1") does not exist. - + The path ("%1") is not writable. این مسیر ('1%') قابل نوشتن نیست. - - + + Cannot Create Data Directory - + Failed to create directory "%1". Please make sure you have sufficient permissions. - + "%1" is a file. Please delete the file and try again. - + Miniz Error خطای جزئی - - - + + + An internal error occurred. Your file may not be saved successfully. - - + + Internal Error خطای درونی - + Could not open file ناتوان در باز کردن پرونده - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3877,7 +3877,7 @@ Read the instructions and try again LayerSound - + Sound Layer لایه صدا diff --git a/translations/pencil_fr.ts b/translations/pencil_fr.ts index 1e43204c11..4fb898c6bc 100644 --- a/translations/pencil_fr.ts +++ b/translations/pencil_fr.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Chemin de sauvegarde invalide - + The path is empty. Le chemin est vide. - + The path ("%1") points to a directory. Le chemin ("%1") pointe vers un répertoire. - + The directory ("%1") does not exist. Le répertoire ("%1") n'existe pas. - + The path ("%1") is not writable. Le chemin ("%1") n'est pas accessible en écriture. - - + + Cannot Create Data Directory Impossible de créer le répertoire de données - + Failed to create directory "%1". Please make sure you have sufficient permissions. Impossible de créer le répertoire "%1". S'il vous plaît assurez-vous que vous avez les autorisations suffisantes. - + "%1" is a file. Please delete the file and try again. "%1" est un fichier. Veuillez supprimer le fichier et réessayer. - + Miniz Error Erreur Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Une erreur interne a eu lieu. Votre fichier peut ne pas être enregistré avec succès. - - + + Internal Error Erreur interne - + Could not open file Impossible d'ouvrir le fichier - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3881,7 +3881,7 @@ Lisez les instruction et essayez de nouveau LayerSound - + Sound Layer Calque son diff --git a/translations/pencil_he.ts b/translations/pencil_he.ts index b7d477a535..fb22bc57a9 100644 --- a/translations/pencil_he.ts +++ b/translations/pencil_he.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path מיקום לא חוקי לשמירה - + The path is empty. - + The path ("%1") points to a directory. - + The directory ("%1") does not exist. - + The path ("%1") is not writable. - - + + Cannot Create Data Directory לא ניתן ליצור תיקיית נתונים - + Failed to create directory "%1". Please make sure you have sufficient permissions. - + "%1" is a file. Please delete the file and try again. - + Miniz Error - - - + + + An internal error occurred. Your file may not be saved successfully. - - + + Internal Error שגיאה פנימית - + Could not open file - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer שכבת צליל diff --git a/translations/pencil_hu_HU.ts b/translations/pencil_hu_HU.ts index 2c5948298a..9c857bd48c 100644 --- a/translations/pencil_hu_HU.ts +++ b/translations/pencil_hu_HU.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Érvénytelen mentési útvonal - + The path is empty. - + The path ("%1") points to a directory. - + The directory ("%1") does not exist. - + The path ("%1") is not writable. - - + + Cannot Create Data Directory Az adatkönyvtár nem hozható létre - + Failed to create directory "%1". Please make sure you have sufficient permissions. - + "%1" is a file. Please delete the file and try again. - + Miniz Error - - - + + + An internal error occurred. Your file may not be saved successfully. - - + + Internal Error Belső hiba - + Could not open file - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer Hang réteg diff --git a/translations/pencil_id.ts b/translations/pencil_id.ts index 6ff8316fc5..e78912d1d1 100644 --- a/translations/pencil_id.ts +++ b/translations/pencil_id.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path - + The path is empty. - + The path ("%1") points to a directory. - + The directory ("%1") does not exist. - + The path ("%1") is not writable. - - + + Cannot Create Data Directory - + Failed to create directory "%1". Please make sure you have sufficient permissions. - + "%1" is a file. Please delete the file and try again. - + Miniz Error - - - + + + An internal error occurred. Your file may not be saved successfully. - - + + Internal Error Kerusakan Internal - + Could not open file Tidak dapat membuka file - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer Layer suara diff --git a/translations/pencil_it.ts b/translations/pencil_it.ts index c68257cb5c..8863380f9c 100644 --- a/translations/pencil_it.ts +++ b/translations/pencil_it.ts @@ -43,7 +43,7 @@ Importing Animated Image... - + Importazione dell'immagine animata in corso... @@ -354,7 +354,7 @@ Easing: frame %1 to %2 - + Effetto dolce: fotogramma da %1 a %2 @@ -369,22 +369,22 @@ In - + Entrata Out - + Uscita In-Out - + Entrata-Uscita Out-In - + Uscita-Entrata @@ -399,7 +399,7 @@ Quick - + Veloce @@ -414,17 +414,17 @@ Fastest - + Il più veloce Circle-based - + Basato sul cerchio Overshoot - + Superamento @@ -487,202 +487,202 @@ Moderate Ease-in - + Entrata dolce moderato Moderate Ease-out - + Uscita dolce moderata Moderate Ease-in - Ease-out - + Entrata-Uscita dolci moderate Moderate Ease-out - Ease-in - + Uscita-Entrata dolci moderate Quick Ease-in - + Effetto entrata dolce rapido Quick Ease-out - + Effetto uscita dolce rapido Quick Ease-in - Ease-out - + Effetto entrata-dolce uscita-dolce rapido Quick Ease-out - Ease-in - + Effetto uscita-dolce entrata-dolce rapido Fast Ease-in - + Effetto entrata-dolce veloce Fast Ease-out - + Effetto uscita-dolce veloce Fast Ease-in - Ease-out - + Effetto entrata-dolce uscita-dolce veloce Fast Ease-out - Ease-in - + Effetto uscita-dolce entrata-dolce veloce Faster Ease-in - + Effetto entrata-dolce più veloce Faster Ease-out - + Effetto uscita-dolce più veloce Faster Ease-in - Ease-out - + Effetto entrata-dolce uscita-dolce più veloce Faster Ease-out - Ease-in - + Effetto uscita-dolce entrata-dolce più veloce Slow Ease-in - + Effetto entrata-dolce lento Slow Ease-out - + Effetto uscita-dolce lento Slow Ease-in - Ease-out - + Effetto entrata-dolce uscita-dolce lento Slow Ease-out - Ease-in - + Effetto uscita-dolce entrata-dolce lento Fastest Ease-in - + Effetto entrata-dolce velocissimo Fastest Ease-out - + Effetto uscita-dolce velocissimo Fastest Ease-in - Ease-out - + Effetto entrata-dolce uscita-dolce velocissimo Fastest Ease-out - Ease-in - + Effetto uscita-dolce entrata-dolce velocissimo Circle-based Ease-in - + Entrata circolare Circle-based Ease-out - + Uscita circolare Circle-based Ease-in - Ease-out - + Entrata Uscita circolare Circle-based Ease-out - Ease-in - + Uscita Entrata circolare Elastic Ease-in - + Entrata-dolce elastica Elastic Ease-out - + Uscita-dolce elastica Elastic Ease-in - Ease-out - + Entrata-dolce Uscita-dolce elastica Elastic Ease-out - Ease-in - + Uscita-dolce Entrata-dolce elastica Overshoot Ease-in - + Superamento Entrata-dolce Overshoot Ease-out - + Superamento Uscita-dolce Overshoot Ease-in - Ease-out - + Superamento Entrata-dolce Uscita-dolce Overshoot Ease-out - Ease-in - + Superamento Uscita-dolce Entrata-dolce Bounce Ease-in - + Entrata-dolce a rimbalzo Bounce Ease-out - + Uscita-dolce a rimbalzo Bounce Ease-in - Ease-out - + Entrata-dolce Uscita-dolce a rimbalzo Bounce Ease-out - Ease-in - + Uscita-dolce Entrata-dolce a rimbalzo @@ -2699,7 +2699,7 @@ The selected image has a format that does not support animation. - + L'immagine selezionata ha un formato che non supporta l'animazione. @@ -2778,7 +2778,7 @@ WEBP - + WEBP @@ -2859,7 +2859,7 @@ The MP4 format does not support odd width. Please specify an even width or use a different file format. - + Il formato MP4 non supporta la larghezza dispari. Specificare una larghezza uniforme o utilizzare un formato file diverso. @@ -2869,7 +2869,7 @@ The MP4 format does not support odd height. Please specify an even height or use a different file format. - + Il formato MP4 non supporta l'altezza dispari. Specificare un'altezza uniforme o utilizzare un formato file diverso. @@ -2957,7 +2957,7 @@ Import animated image - + Importa immagine animata @@ -2997,7 +2997,7 @@ Export animated image - + Esporta immagine animata @@ -3083,7 +3083,7 @@ Animated image formats - + Formati di immagini animate @@ -3094,99 +3094,99 @@ FileManager - - - - + + + + Invalid Save Path Percorso di salvataggio non valido - + The path is empty. Il percorso è vuoto. - + The path ("%1") points to a directory. Il percorso ("%1") punta a una directory. - + The directory ("%1") does not exist. La directory ("%1") non esiste. - + The path ("%1") is not writable. Il percorso ("%1") non è scrivibile. - - + + Cannot Create Data Directory Non posso creare una directory dati - + Failed to create directory "%1". Please make sure you have sufficient permissions. Impossibile creare la directory "%1". Assicurati di disporre di autorizzazioni sufficienti. - + "%1" is a file. Please delete the file and try again. "%1" è un file. Elimina il file e riprova. - + Miniz Error - + Errore Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Si è verificato un errore interno. Il tuo file potrebbe non essere stato salvato correttamente. - - + + Internal Error Errore interno - + Could not open file Impossibile aprire il file - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. Il file non esiste, quindi non siamo in grado di aprirlo. Controlla che il percorso sia corretto e riprova. - + No permission to read the file. Please check you have read permissions for this file and try again. Nessuna autorizzazione per leggere il file. Controlla di avere i permessi di lettura per questo file e riprova. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: Si è verificato un errore durante l'elaborazione del tuo file. Questo di solito significa che il tuo progetto è stato almeno parzialmente danneggiato. Riprova con una versione più recente di Pencil2D o prova a utilizzare un file di backup se ne hai uno. Se ci contatti tramite uno dei nostri canali ufficiali potremmo essere in grado di aiutarti. Per segnalare problemi, i posti migliori per contattarci sono: - + Bitmap Layer %1 Livello Bitmap %1 - + Vector Layer %1 Livello Vettoriale %1 - + Sound Layer %1 Livello Suono %1 @@ -3303,7 +3303,7 @@ Canvas Cursor - + Cursore del Canvas @@ -3413,7 +3413,7 @@ Bulgarian - + Bulgaro @@ -3458,7 +3458,7 @@ Persian - + Persiano @@ -3498,17 +3498,17 @@ Korean - + Koreano Norwegian Bokmål - + Bokmål norvegese Dutch – Netherlands - + Olandese – Paesi Bassi @@ -3553,7 +3553,7 @@ Cantonese - + Cantonese @@ -3619,7 +3619,7 @@ Import animated image - + Importa immagine animata @@ -3842,7 +3842,7 @@ Read the instructions and try again Fade in / Fade out - + Dissolvenza entrata / Dissolvenza uscita @@ -3852,7 +3852,7 @@ Read the instructions and try again Fade in - + Dissolvenza entrata @@ -3862,7 +3862,7 @@ Read the instructions and try again Fade out - + Dissolvenza uscita @@ -3883,7 +3883,7 @@ Read the instructions and try again LayerSound - + Sound Layer Livello audio @@ -3956,7 +3956,7 @@ Read the instructions and try again Perspective Lines Angle - + Angolo delle linee di prospettiva @@ -3981,7 +3981,7 @@ Read the instructions and try again Change line color - + Cambia il colore della linea @@ -4059,7 +4059,7 @@ Read the instructions and try again Image Predefined set... - + Imposta immagine predefinita... @@ -4127,7 +4127,7 @@ Read the instructions and try again Safe Areas - + Aree sicure @@ -4227,7 +4227,7 @@ Read the instructions and try again Rotate Anticlockwise - + Ruota in senso antiorario @@ -4461,7 +4461,7 @@ Read the instructions and try again Animated Image... - + Immagine animata... @@ -4596,7 +4596,7 @@ Read the instructions and try again Lock Windows - + Blocca finestre @@ -4606,17 +4606,17 @@ Read the instructions and try again Add Exposure - + Aggiungi esposizione Subtract Exposure - + Sottrai esposizione Reverse Frames Order - + Inverti ordine dei frame @@ -4626,7 +4626,7 @@ Read the instructions and try again Status Bar - + Barra di stato @@ -4696,7 +4696,7 @@ Vuoi salavare i cambiamenti? AutoSave Reminder - + Promemoria di salvataggio automatico @@ -4797,7 +4797,7 @@ Color(e/i) nei tratti verranno alterati da questa azione! Checking environment... - + Controllo dell'ambiente... @@ -4887,7 +4887,7 @@ Color(e/i) nei tratti verranno alterati da questa azione! Unknown error - + Errore sconosciuto @@ -5074,7 +5074,7 @@ Color(e/i) nei tratti verranno alterati da questa azione! Onion Skins Window title of display options like . - + Buccia di cipolla @@ -5133,7 +5133,7 @@ Color(e/i) nei tratti verranno alterati da questa azione! Show During Playback - + Mostra durante la riproduzione @@ -5247,7 +5247,7 @@ Controlla la selezione e riprova. KeyFrame Pos - + Pos Fotogramma Chiave @@ -5597,13 +5597,13 @@ o annullare View: Horizontal Flip Shortcut - + Vista: Capovolgimento orizzontale View: Vertical Flip Shortcut - + Vista: Capovolgimento verticale @@ -5627,13 +5627,13 @@ o annullare Selection: Horizontal Flip Shortcut - + Selezione: Capovolgimento orizzontale Selection: Vertical Flip Shortcut - + Selezione: Capovolgimento verticale @@ -5759,19 +5759,19 @@ o annullare Toggle Next Onion Skin Shortcut - + Mostra/nascondi prossima buccia di cipolla Toggle Previous Onion Skin Shortcut - + Mostra/nascondi precedente buccia di cipolla Open File Shortcut - + Apri file @@ -5825,13 +5825,13 @@ o annullare Center View Shortcut - + Vista centrale Rotate Anticlockwise Shortcut - + Ruota in senso antiorario @@ -5855,7 +5855,7 @@ o annullare Save File Shortcut - + Salva file @@ -5891,7 +5891,7 @@ o annullare Toggle Onion Skins Window Visibility Shortcut - + Mostra/nascondi finestra per la visibilità bucce di cipolla @@ -6161,7 +6161,7 @@ o annullare Display timecode Timeline menu for choose a timecode - + Visualizza il codice temporale @@ -6379,7 +6379,7 @@ o annullare Drawing - + Disegno diff --git a/translations/pencil_ja.ts b/translations/pencil_ja.ts index 9a19bb5a16..9496f8b271 100644 --- a/translations/pencil_ja.ts +++ b/translations/pencil_ja.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path セーブ先が不正です - + The path is empty. - + The path ("%1") points to a directory. - + The directory ("%1") does not exist. - + The path ("%1") is not writable. - - + + Cannot Create Data Directory データフォルダーが作成できません - + Failed to create directory "%1". Please make sure you have sufficient permissions. - + "%1" is a file. Please delete the file and try again. - + Miniz Error - - - + + + An internal error occurred. Your file may not be saved successfully. - - + + Internal Error 内部エラー - + Could not open file - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer 音声レイヤー diff --git a/translations/pencil_kab.ts b/translations/pencil_kab.ts index 646ace3abd..0f2c83824d 100644 --- a/translations/pencil_kab.ts +++ b/translations/pencil_kab.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Abrid n usekles d armeɣtu - + The path is empty. - + The path ("%1") points to a directory. Abrid ("%1") iṛeccem s akaram. - + The directory ("%1") does not exist. Akaram ("%1") ulac-it. - + The path ("%1") is not writable. Abrid ("%1") ur yesɛi ara adduf s tira. - - + + Cannot Create Data Directory D awezɣi asnulfu n ukaram n sisefka - + Failed to create directory "%1". Please make sure you have sufficient permissions. D awezɣi asnulfu n ufaylu "%1". Ttxil-k tḥeqqeq belli tesɛiḍ isirigen. - + "%1" is a file. Please delete the file and try again. "%1" d afaylu. Ttxil-k kkes afaylu sakin eɛreḍ tikkelt-nniḍen. - + Miniz Error Tuccḍa Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Teḍra-d tuccḍa tadigant. Afaylu-inek ulamek ara yettwasekles akken iwata. - - + + Internal Error Tuccḍa tadigant - + Could not open file D awezɣi alday n ufaylu - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer Akalku imesli diff --git a/translations/pencil_ko.ts b/translations/pencil_ko.ts index 29585e3371..f32b4066c4 100644 --- a/translations/pencil_ko.ts +++ b/translations/pencil_ko.ts @@ -3094,99 +3094,99 @@ FileManager - - - - + + + + Invalid Save Path 잘못된 저장 경로 - + The path is empty. 경로가 없습니다. - + The path ("%1") points to a directory. 경로 ("%1")이 폴더를 가리키고 있습니다. - + The directory ("%1") does not exist. 폴더 ("%1")이 존재하지 않습니다. - + The path ("%1") is not writable. 경로 ("%1")에 쓸 수 없습니다. - - + + Cannot Create Data Directory 데이터 디렉토리를 생성할 수 없습니다. - + Failed to create directory "%1". Please make sure you have sufficient permissions. 디렉토리 "%1" 생성에 실패했습니다. 권한이 있는지 확인하세요. - + "%1" is a file. Please delete the file and try again. "%1"은/는 파일입니다. 파일을 지우고 다시 시도하세요. - + Miniz Error miniz 오류 - - - + + + An internal error occurred. Your file may not be saved successfully. 내부적으로 오류가 발생했습니다. 파일이 성공적으로 저장되지 않았을 수도 있습니다. - - + + Internal Error 내부 오류 - + Could not open file 파일을 열 수 없습니다. - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. 파일이 존재하지 않아서 열 수 없습니다. 경로가 올바른지 확인하고 다시 시도해주세요. - + No permission to read the file. Please check you have read permissions for this file and try again. 파일 읽기 권한이 없습니다. 이 파일에 대한 읽기 권한이 있는지 확인하고 다시 시도하세요. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: 파일 가공 중에 오류가 생겼습니다. 이것은 프로젝트가 적어도 부분적으로 망가졌다는 것을 의미합니다. 최신 버전의 Pencil2D로 다시 시도하거나, 백업 파일이 있다면 그것을 사용해주세요. 저희 공식 채널을 통해 연락을 주시면 도와드리겠습니다. 문제를 신고하려면 이곳으로 연락하세요: - + Bitmap Layer %1 비트맵 레이어 %1 - + Vector Layer %1 벡터 레이어 %1 - + Sound Layer %1 사운드 레이어 %1 @@ -3882,7 +3882,7 @@ Read the instructions and try again LayerSound - + Sound Layer 음성 레이어 diff --git a/translations/pencil_nb.ts b/translations/pencil_nb.ts index 8ef39a9cd1..fe4955b3ec 100644 --- a/translations/pencil_nb.ts +++ b/translations/pencil_nb.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path - + The path is empty. - + The path ("%1") points to a directory. - + The directory ("%1") does not exist. - + The path ("%1") is not writable. - - + + Cannot Create Data Directory Kan ikke opprette datamappe - + Failed to create directory "%1". Please make sure you have sufficient permissions. - + "%1" is a file. Please delete the file and try again. "%1" er en fil. Vennligst slett filen og prøv igjen. - + Miniz Error - - - + + + An internal error occurred. Your file may not be saved successfully. En intern feil oppstod. Filen din kan ikke lagres. - - + + Internal Error Intern feil - + Could not open file Kunne ikke åpne fil - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer Lydlag diff --git a/translations/pencil_nl_NL.ts b/translations/pencil_nl_NL.ts index 394c5639a1..e774d48aff 100644 --- a/translations/pencil_nl_NL.ts +++ b/translations/pencil_nl_NL.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path - + The path is empty. - + The path ("%1") points to a directory. - + The directory ("%1") does not exist. - + The path ("%1") is not writable. - - + + Cannot Create Data Directory - + Failed to create directory "%1". Please make sure you have sufficient permissions. - + "%1" is a file. Please delete the file and try again. - + Miniz Error - - - + + + An internal error occurred. Your file may not be saved successfully. Er is een interne fout opgetreden. Het is mogelijk dat je bestand niet werd opgeslagen. - - + + Internal Error Interne fout - + Could not open file Het bestand kon niet geopend worden - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer Geluidlaag diff --git a/translations/pencil_pl.ts b/translations/pencil_pl.ts index 1a486612bf..ab3912d7a7 100644 --- a/translations/pencil_pl.ts +++ b/translations/pencil_pl.ts @@ -3094,99 +3094,99 @@ Polskie tłumaczenie: Reptile (<a href=mailto:"reptile@o2.pl">re FileManager - - - - + + + + Invalid Save Path Nieprawidłowa ścieżka zapisu - + The path is empty. Ścieżka do pliku jest pusta - + The path ("%1") points to a directory. Ścieżka ("%1") odnosi się do folderu. - + The directory ("%1") does not exist. Folder ("%1") nie istnieje. - + The path ("%1") is not writable. Ścieżka ("%1") nie umożliwia zapisu. - - + + Cannot Create Data Directory Nie można utworzyć folderu danych - + Failed to create directory "%1". Please make sure you have sufficient permissions. Nie można utworzyć folderu "%1". Upewnij się, że masz wystarczające uprawnienia. - + "%1" is a file. Please delete the file and try again. "%1" jest plikiem. Usuń plik i spróbuj ponownie. - + Miniz Error Błąd Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Wystąpił błąd wewnętrzny. Twój plik może nie zostać pomyślnie zapisany. - - + + Internal Error Błąd wewnętrzny - + Could not open file Nie można otworzyć pliku - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. Ten plik nie istnieje, więc nie może być otwarty. Upewnij się, że ścieżka do pliku jest prawidłowa i spróbuj ponownie. - + No permission to read the file. Please check you have read permissions for this file and try again. Brak uprawnień do odczytania tego pliku. Upewnij się, że masz uprawnienia do odczytu tego pliku i spróbuj ponownie. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: Wystąpił błąd podczas przetwarzania Twojego pliku. Zwykle oznacza to, że Twój projekt jest co najmniej częściowo uszkodzony. Możesz spróbować ponownie, korzystając z nowszej wersji Pencil2D, lub możesz spróbować użyć pliku kopii zapasowej, jeśli taką posiadasz. Jeśli skontaktujesz się z nami za pośrednictwem jednego z naszych oficjalnych kanałów, być może będziemy w stanie Ci pomóc. W celu zgłaszania problemów, najlepiej nas skontaktować w tych miejscach. - + Bitmap Layer %1 Warstwa bitmapowa %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3878,7 +3878,7 @@ Read the instructions and try again LayerSound - + Sound Layer Warstwa dźwięku diff --git a/translations/pencil_pt.ts b/translations/pencil_pt.ts index ee7968122a..d878bab777 100644 --- a/translations/pencil_pt.ts +++ b/translations/pencil_pt.ts @@ -3094,100 +3094,100 @@ Esta ação não poderá ser desfeita!! FileManager - - - - + + + + Invalid Save Path Caminho de gravação inválido - + The path is empty. O caminho está vazio - + The path ("%1") points to a directory. O caminho ("%1") aponta para um diretório. - + The directory ("%1") does not exist. O diretório ("%1") não existe. - + The path ("%1") is not writable. O caminho ("%1") não está acessível para escrita - - + + Cannot Create Data Directory Não é possível criar um diretório de dados - + Failed to create directory "%1". Please make sure you have sufficient permissions. Falha na criação do diretório "%1". Verifique se tem permissões suficientes. - + "%1" is a file. Please delete the file and try again. "%1" é um ficheiro. Por favor exclua o ficheiro e tente novamente. - + Miniz Error Erro na Biblioteca Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Um erro interno ocorreu. O ficheiro pode não ter sido gravado com sucesso. - - + + Internal Error Erro interno - + Could not open file Não foi possível abrir o ficheiro - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. O arquivo não existe, então não podemos abri-lo. Por favor verifique se o caminho está correto e tente novamente! - + No permission to read the file. Please check you have read permissions for this file and try again. Sem permissão para ler este arquivo. Por favor, verifique se você tem permissão para ler este arquivo e tente novamente. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: Existe um erro processando seu arquivo. Isso geralmente significa que seu projeto está parcialmente corrompido. Tente novamente com uma versão mais atual do Pencil2d, ou tente usar outro arquivo salvo que você tenha. Se você nos contactar pelos canais oficiais talvez possamos te ajudar melhor. Para reportar problemas, o melhor local é: - + Bitmap Layer %1 Camada de imagem %1 - + Vector Layer %1 Camada de vetor %1 - + Sound Layer %1 Camada de som %1 @@ -3883,7 +3883,7 @@ Leia as instruções e volte a tentar LayerSound - + Sound Layer Camada de Som diff --git a/translations/pencil_pt_BR.ts b/translations/pencil_pt_BR.ts index fce5756a7c..a91ab7cf3b 100644 --- a/translations/pencil_pt_BR.ts +++ b/translations/pencil_pt_BR.ts @@ -3094,100 +3094,100 @@ Esta ação não poderá ser desfeita!! FileManager - - - - + + + + Invalid Save Path Caminho inválido - + The path is empty. O caminho está vazio - + The path ("%1") points to a directory. O caminho ("%1") aponta para uma pasta. - + The directory ("%1") does not exist. A pasta ("%1") não existe. - + The path ("%1") is not writable. O caminho ("%1") não pode ser escrito. - - + + Cannot Create Data Directory Impossível criar uma pasta de dados - + Failed to create directory "%1". Please make sure you have sufficient permissions. Falha ao criar a pasta "%1". Por favor, tenha certeza de que você tem permissões suficientes. - + "%1" is a file. Please delete the file and try again. "%1" é um arquivo. Por favor, apague o arquivo e tente novamente. - + Miniz Error Erro do Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Um erro interno ocorreu. Seu arquivo pode não ter sido salvo com sucesso. - - + + Internal Error Erro interno - + Could not open file Não foi possível abrir o arquivo - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. O arquivo não existe, então não podemos abri-lo. Por favor verifique se o caminho está correto e tente novamente! - + No permission to read the file. Please check you have read permissions for this file and try again. Sem permissão para ler este arquivo. Por favor, verifique se você tem permissão para ler este arquivo e tente novamente. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: Existe um erro processando seu arquivo. Isso geralmente significa que seu projeto está parcialmente corrompido. Tente novamente com uma versão mais atual do Pencil2d, ou tente usar outro arquivo salvo que você tenha. Se você nos contactar pelos canais oficiais talvez possamos te ajudar melhor. Para reportar problemas, o melhor local é: - + Bitmap Layer %1 Camada de imagem %1 - + Vector Layer %1 Camada de vetor %1 - + Sound Layer %1 Camada de som %1 @@ -3883,7 +3883,7 @@ Leia as instruções e volte a tentar LayerSound - + Sound Layer Camada de Som diff --git a/translations/pencil_ru.ts b/translations/pencil_ru.ts index f56ad30fde..7e84015d50 100644 --- a/translations/pencil_ru.ts +++ b/translations/pencil_ru.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Недопустимый путь сохранения - + The path is empty. Путь пуст. - + The path ("%1") points to a directory. Путь ("%1") указывает на каталог. - + The directory ("%1") does not exist. Папка ("%1") не существует. - + The path ("%1") is not writable. Путь ("%1") не доступен для записи. - - + + Cannot Create Data Directory Не удаётся создать каталог данных - + Failed to create directory "%1". Please make sure you have sufficient permissions. Не удалось создать каталог "%1". Убедитесь, что у вас есть достаточные права. - + "%1" is a file. Please delete the file and try again. "%1" - это файл. Удалите файл и повторите попытку. - + Miniz Error Ошибка Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Возникла внутренняя ошибка. Возможно, файл не сохранён. - - + + Internal Error Внутренняя ошибка - + Could not open file Невозможно открыть файл - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 Слой битовой карты %1 - + Vector Layer %1 Векторный слой %1 - + Sound Layer %1 Звуковой слой %1 @@ -3881,7 +3881,7 @@ Read the instructions and try again LayerSound - + Sound Layer Звуковой слой diff --git a/translations/pencil_sl.ts b/translations/pencil_sl.ts index a3119e97fc..e81c179385 100644 --- a/translations/pencil_sl.ts +++ b/translations/pencil_sl.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Napačna pot shranjevanja - + The path is empty. - + The path ("%1") points to a directory. Pot ("%1") kaže na mapo. - + The directory ("%1") does not exist. Mapa ("%1") ne obstaja. - + The path ("%1") is not writable. V mapo ("%1") se ne da pisati. - - + + Cannot Create Data Directory Ne morem ustvariti podatkovne mape - + Failed to create directory "%1". Please make sure you have sufficient permissions. Ni bilo možno ustvariti mape "%1". Preverite ali imate zadostne pravice. - + "%1" is a file. Please delete the file and try again. "%1" je datoteka. Prosim izbriošite datoteko in poizkusite znova. - + Miniz Error - - - + + + An internal error occurred. Your file may not be saved successfully. Prišlo je do notranje napake. Vaša datoteka se lahko poškoduje med zapisovanjem. - - + + Internal Error Notranja napaka - + Could not open file - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer Zvočni sloj diff --git a/translations/pencil_sv.ts b/translations/pencil_sv.ts index ac421f4f38..3fa7e498f7 100644 --- a/translations/pencil_sv.ts +++ b/translations/pencil_sv.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path Ogilt sökväg för att spara - + The path is empty. - + The path ("%1") points to a directory. Sökvägen (%1) pekar mot en mapp. - + The directory ("%1") does not exist. Mappen (%1) finns inte. - + The path ("%1") is not writable. Sökvägen (%1) är inte skrivbar. - - + + Cannot Create Data Directory Kan inte skapa datamapp - + Failed to create directory "%1". Please make sure you have sufficient permissions. Kunde inte skapa mappen (%1). Tillse att du har tillräcklig behörighet. - + "%1" is a file. Please delete the file and try again. "%1" är en fil. Ta bort filen och försök igen. - + Miniz Error Miniz-fel - - - + + + An internal error occurred. Your file may not be saved successfully. Ett internt fel inträffade. Din fil kanske inte sparas korrekt. - - + + Internal Error Intern fel - + Could not open file Kunde inte öppna filen - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. - + No permission to read the file. Please check you have read permissions for this file and try again. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: - + Bitmap Layer %1 - + Vector Layer %1 - + Sound Layer %1 @@ -3876,7 +3876,7 @@ Read the instructions and try again LayerSound - + Sound Layer Ljudlager diff --git a/translations/pencil_tr.ts b/translations/pencil_tr.ts index 404770cc30..b03dd3068a 100644 --- a/translations/pencil_tr.ts +++ b/translations/pencil_tr.ts @@ -3094,99 +3094,99 @@ FileManager - - - - + + + + Invalid Save Path Geçersiz Kayıt Yolu - + The path is empty. Yol boş. - + The path ("%1") points to a directory. Yol ("%1") bir dizini işaret eder. - + The directory ("%1") does not exist. Dizin ("%1") mevcut değil. - + The path ("%1") is not writable. Yol ("%1") yazılabilir değil. - - + + Cannot Create Data Directory Veri Dizini Oluşturulamıyor - + Failed to create directory "%1". Please make sure you have sufficient permissions. "%1" dizini oluşturulamadı. Lütfen yeterli izniniz olduğundan emin olun. - + "%1" is a file. Please delete the file and try again. "%1" bir dosyadır. Lütfen dosyayı silin ve tekrar deneyin. - + Miniz Error Miniz Hatası - - - + + + An internal error occurred. Your file may not be saved successfully. Bir iç hata oluştu. Dosyanız başarıyla kaydedilemeyebilir. - - + + Internal Error İç Hata - + Could not open file Dosya açılamadı - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. Dosya mevcut değil, bu yüzden onu açamıyoruz. Lütfen yolun doğru olduğundan emin olmak için kontrol edin ve tekrar deneyin. - + No permission to read the file. Please check you have read permissions for this file and try again. Dosyayı okuma izni yok. Lütfen bu dosya için okuma izniniz olup olmadığını kontrol edin ve tekrar deneyin. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: Dosyanız işlenirken bir hata oluştu. Bu genellikle projenizin en azından kısmen bozulduğu anlamına gelir. Pencil2D'nin daha yeni bir sürümüyle tekrar deneyin veya varsa bir yedekleme dosyası kullanmayı deneyin. Bizimle resmi kanallarımızdan biri aracılığıyla iletişime geçerseniz size yardımcı olabiliriz. Sorunları bildirmek için bize ulaşabileceğiniz en iyi yerler: - + Bitmap Layer %1 Bitmap Katmanı %1 - + Vector Layer %1 Vektör Katmanı %1 - + Sound Layer %1 Ses Katmanı %1 @@ -3882,7 +3882,7 @@ Talimatları okuyun ve yeniden deneyin LayerSound - + Sound Layer Ses Katmanı diff --git a/translations/pencil_vi.ts b/translations/pencil_vi.ts index ccb53dc746..3a726f88b7 100644 --- a/translations/pencil_vi.ts +++ b/translations/pencil_vi.ts @@ -3094,99 +3094,99 @@ FileManager - - - - + + + + Invalid Save Path Đường dẫn lưu tập tin không hợp lệ - + The path is empty. Đường dẫn rỗng. - + The path ("%1") points to a directory. Đường dẫn ("%1") trỏ tới thư mục. - + The directory ("%1") does not exist. Thư mục ("%1") không tồn tại. - + The path ("%1") is not writable. Đường dẫn ("%1") không thể ghi đè. - - + + Cannot Create Data Directory Không thể tạo Được thư mục dữ liệu - + Failed to create directory "%1". Please make sure you have sufficient permissions. Tạo thư mục "%1" thất bại. Vui lòng đảm bảo bạn có đủ quyền hạn. - + "%1" is a file. Please delete the file and try again. "%1" là một file. Vui lòng xóa file và thử lại. - + Miniz Error Lỗi mã hóa Miniz - - - + + + An internal error occurred. Your file may not be saved successfully. Có lỗi phát dinh nội tại. File của bạn có thể không được lưu thành công. - - + + Internal Error Lỗi phát sinh nội tại! - + Could not open file Không thể mở file - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. File này không tồn tại, không thể mở file. Vui lòng kiểm tra lại để đảm bảo đường dẫn chính xác và thử lại. - + No permission to read the file. Please check you have read permissions for this file and try again. Không có quyền đọc file. Vui lòng kiểm tra rằng bạn đã ủy quyền hạn đọc file này rồi thử lại. - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: Đã xảy ra lỗi khi xử lý file của bạn. Điều này thường có nghĩa là dự án của bạn ít hay nhiều đã bị hỏng. Hảy thử lại với phiên bản mới hơn của Pencil2D, hoặc sử dụng file sao lưu nếu bạn có. Nếu bạn liên hệ với chúng tôi thông qua một trong các kênh chính thức, chúng tôi có thể giúp bạn. Để báo cáo lỗi, hãy liên hệ với chúng tôi thông qua: - + Bitmap Layer %1 Layer Bitmap %1 - + Vector Layer %1 Layer Vector %1 - + Sound Layer %1 Layer Âm thanh %1 @@ -3882,7 +3882,7 @@ Read the instructions and try again LayerSound - + Sound Layer Layer âm thanh diff --git a/translations/pencil_yue.ts b/translations/pencil_yue.ts index 663b3db901..5ba5192c3f 100644 --- a/translations/pencil_yue.ts +++ b/translations/pencil_yue.ts @@ -3094,99 +3094,99 @@ FileManager - - - - + + + + Invalid Save Path 无效的保存路径 - + The path is empty. 该路径为空 - + The path ("%1") points to a directory. 路径 ("%1") 指向一个目录。 - + The directory ("%1") does not exist. 目录 ("%1") 不存在。 - + The path ("%1") is not writable. 路径 ("%1") 是不可写入的。 - - + + Cannot Create Data Directory 不能创建数据目录 - + Failed to create directory "%1". Please make sure you have sufficient permissions. 创建目录 "%1" 失败。请确保拥有足够的权限。 - + "%1" is a file. Please delete the file and try again. "%1" 是個檔案,請刪除檔案再試一次。 - + Miniz Error Miniz 錯誤 - - - + + + An internal error occurred. Your file may not be saved successfully. 发生了一个内部错误。你的文件可能没有保存成功。 - - + + Internal Error 内部错误 - + Could not open file 無法開啟檔案 - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. 檔案不存在所以無法開啟。請檢查檔案路徑並再試一次。 - + No permission to read the file. Please check you have read permissions for this file and try again. 沒有讀取該檔案的權限 - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: 處理檔案過程出現錯誤,您的檔案可能已經損毀。請下載最新版 Pencil2D 再嘗試開啟一次,或者使用您的備份檔案。聯絡 Pencil2D 的開發者: - + Bitmap Layer %1 位图层 %1 - + Vector Layer %1 矢量层 %1 - + Sound Layer %1 声音层 %1 @@ -3882,7 +3882,7 @@ Read the instructions and try again LayerSound - + Sound Layer 声音层 diff --git a/translations/pencil_zh_CN.ts b/translations/pencil_zh_CN.ts index 973ccf09a8..1bb7f87ace 100644 --- a/translations/pencil_zh_CN.ts +++ b/translations/pencil_zh_CN.ts @@ -3093,99 +3093,99 @@ FileManager - - - - + + + + Invalid Save Path 无效的保存路径 - + The path is empty. 该路径为空 - + The path ("%1") points to a directory. 路径 ("%1") 指向一个目录。 - + The directory ("%1") does not exist. 目录 ("%1") 不存在。 - + The path ("%1") is not writable. 路径 ("%1") 是不可写入的。 - - + + Cannot Create Data Directory 不能创建数据目录 - + Failed to create directory "%1". Please make sure you have sufficient permissions. 创建目录 "%1" 失败。请确保拥有足够的权限。 - + "%1" is a file. Please delete the file and try again. "%1" 是一个文件。请删除文件再尝试一次。 - + Miniz Error Miniz 错误 - - - + + + An internal error occurred. Your file may not be saved successfully. 发生了一个内部错误。你的文件可能没有保存成功。 - - + + Internal Error 内部错误 - + Could not open file 不能打开文件 - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. 檔案不存在所以無法開啟。請檢查檔案路徑並再試一次。 - + No permission to read the file. Please check you have read permissions for this file and try again. 沒有讀取該檔案的權限 - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: 處理檔案過程出現錯誤,您的檔案可能已經損毀。請下載最新版 Pencil2D 再嘗試開啟一次,或者使用您的備份檔案。聯絡 Pencil2D 的開發者: - + Bitmap Layer %1 位图层 %1 - + Vector Layer %1 矢量层 %1 - + Sound Layer %1 声音层 %1 @@ -3881,7 +3881,7 @@ Read the instructions and try again LayerSound - + Sound Layer 声音层 diff --git a/translations/pencil_zh_TW.ts b/translations/pencil_zh_TW.ts index fe403d02c9..004eeb8eb6 100644 --- a/translations/pencil_zh_TW.ts +++ b/translations/pencil_zh_TW.ts @@ -3095,99 +3095,99 @@ FileManager - - - - + + + + Invalid Save Path 無效的路徑 - + The path is empty. 路徑為空 - + The path ("%1") points to a directory. 該路徑是一個目錄 ("%1") - + The directory ("%1") does not exist. 目錄不存在 ("%1") - + The path ("%1") is not writable. 沒有寫入權限 ("%1") - - + + Cannot Create Data Directory 無法建立資料目錄 - + Failed to create directory "%1". Please make sure you have sufficient permissions. 無法創建目錄 "%1",請確定您有足夠權限。 - + "%1" is a file. Please delete the file and try again. "%1" 是個檔案,請刪除檔案再試一次。 - + Miniz Error Miniz 錯誤 - - - + + + An internal error occurred. Your file may not be saved successfully. 發生內部錯誤,您的檔案可能沒有儲存成功。 - - + + Internal Error 內部錯誤 - + Could not open file 無法開啟檔案 - + The file does not exist, so we are unable to open it.Please check to make sure the path is correct and try again. 檔案不存在所以無法開啟。請檢查檔案路徑並再試一次。 - + No permission to read the file. Please check you have read permissions for this file and try again. 沒有讀取該檔案的權限 - + There was an error processing your file. This usually means that your project has been at least partially corrupted. Try again with a newer version of Pencil2D, or try to use a backup file if you have one. If you contact us through one of our official channels we may be able to help you.For reporting issues, the best places to reach us are: 處理檔案過程出現錯誤,您的檔案可能已經損毀。請下載最新版 Pencil2D 再嘗試開啟一次,或者使用您的備份檔案。聯絡 Pencil2D 的開發者: - + Bitmap Layer %1 位图层 %1 - + Vector Layer %1 矢量层 %1 - + Sound Layer %1 声音层 %1 @@ -3883,7 +3883,7 @@ Read the instructions and try again LayerSound - + Sound Layer 音效層 diff --git a/util/installer/pencil2d.bundle.wxs b/util/installer/pencil2d.bundle.wxs index 312e594986..f838da4b60 100644 --- a/util/installer/pencil2d.bundle.wxs +++ b/util/installer/pencil2d.bundle.wxs @@ -43,6 +43,7 @@ + diff --git a/util/installer/translations/pencil2d_it.wxl.xlf b/util/installer/translations/pencil2d_it.wxl.xlf new file mode 100644 index 0000000000..cc1958fdc0 --- /dev/null +++ b/util/installer/translations/pencil2d_it.wxl.xlf @@ -0,0 +1,328 @@ + + + + +Are you sure you want to cancel? +Sei sicuro di voler annullare? + + + +Files In Use +File in uso + + + +The following applications are using files that need to be updated: +Le seguenti applicazioni utilizzano file che devono essere aggiornati: + + + +Close the &applications and attempt to restart them. +Chiudi le &applicazioni e prova a riavviarle. + + + +&Do not close applications. A reboot will be required. +&Non chiudere le applicazioni. Sarà necessario un riavvio. + + + +&Retry +&Riprova + + + +&Ignore +&Ignora + + + +E&xit +E&sci + + + +Close the &applications. +Chiudi le &applicazioni. + + + +Preparing files +Preparazione dei file + + + +Pausing Windows automatic updates +Sospensione degli aggiornamenti automatici di Windows + + + +Creating system restore point +Creazione del punto di ripristino del sistema + + + +Uninstalling packages +Disinstallazione dei pacchetti + + + +Installing packages +Installazione di pacchetti + + + +Modifying packages +Modifica dei pacchetti + + + +Repairing packages +Riparazione di pacchetti + + + +Upgrading packages +Aggiornamento dei pacchetti + + + +[WixBundleName] Setup +Configurazione di[WixBundleName] + + + +Version [WixBundleVersion] +Versione [WixBundleVersion] + + + +Build [NightlyBuildNumber] ([NightlyBuildTimestamp]) +Build [NightlyBuildNumber] ([NightlyBuildTimestamp]) + + + +Checking for updates +Controllo degli aggiornamenti + + + +&Update to version [WixStdBAUpdateAvailable] +&Aggiorna alla versione [WixStdBAUpdateAvailable] + + + +/install | /repair | /uninstall | /layout [directory] – install, repair, uninstall or create a complete local copy of the bundle in directory. + +/passive | /quiet – suppress interactive prompts or both UI and prompts. +/norestart – suppress any attempts to restart. By default UI will prompt before restart. +/log [logfile] – log to a custom file. By default a log file is created in %TEMP%. + +InstallFolder=[directory] | DesktopShortcut=[0|1] – Overwrite installation options. +/install | /repair | /uninstall | /layout [directory] –installare, riparare, disinstallare o creare una copia locale completa del pacchetto nella directory. + +/passive | /quiet – sopprimere i prompt interattivi o sia l'interfaccia utente che i prompt. +/norestart – sopprimere qualsiasi tentativo di riavvio. Per impostazione predefinita, l'interfaccia utente richiederà prima il riavvio. +/log [logfile] – log in un file personalizzato. Per impostazione predefinita viene creato un file di registro in %TEMP%. + +InstallFolder=[directory] | DesktopShortcut=[0|1] – Sovrascrivi le opzioni di installazione. + + + +I &accept the terms and conditions of the GNU General Public License, version 2 +Accetto i termini e le condizioni della GNU General Public License, versione 2 + + + +View license terms +Visualizza i termini di licenza + + + +&Install [WixBundleName] +&Installa [WixBundleName] + + + +&Upgrade [WixBundleName] +&Aggiornamento [WixBundleName] + + + +Options +Opzioni + + + +Install location: +Posizione di installazione: + + + +&Browse +&Sfoglia + + + +Create &desktop shortcut +Crea &scorciatoia sul desktop + + + +&OK +&OK + + + +&Cancel +&Annulla + + + +Status: +Stato: + + + +Initializing +Inizializzazione + + + +&Cancel +&Annulla + + + +&Repair +&Ripara + + + +&Uninstall +&Disinstalla + + + +[WixBundleName] was successfully set up. +[WixBundleName] è stato configurato con successo. + + + +[WixBundleName] was successfully layouted. +[WixBundleName] è stato impaginato con successo. + + + +[WixBundleName] was successfully uninstalled. +[WixBundleName] è stato disinstallato con successo. + + + +[WixBundleName] was successfully cached. +[WixBundleName] è stato memorizzato correttamente nella cache. + + + +[WixBundleName] was successfully installed. +[WixBundleName] è stato installato con successo. + + + +[WixBundleName] was successfully upgraded. +[WixBundleName] è stato aggiornato con successo. + + + +[WixBundleName] was successfully modified. +[WixBundleName] è stato modificato con successo. + + + +[WixBundleName] was successfully repaired. +[WixBundleName] è stato riparato con successo. + + + +To start using [WixBundleName], please restart your computer. +Per iniziare a utilizzare [WixBundleName], riavvia il computer. + + + +To complete the removal of [WixBundleName], please restart your computer. +Per completare la rimozione di [WixBundleName], riavvia il computer. + + + +&Launch [WixBundleName] +&Lancia [WixBundleName] + + + +&Restart computer +&Riavvia il computer + + + +Failed to set up [WixBundleName]. +Impossibile configurare[WixBundleName]. + + + +Failed to layout [WixBundleName]. +Impossibile impaginare [WixBundleName]. + + + +Failed to uninstall [WixBundleName]. +Impossibile disinstallare [WixBundleName]. + + + +Failed to cache [WixBundleName]. +Impossibile memorizzare nella cache[WixBundleName]. + + + +Failed to install [WixBundleName]. +Impossibile installare [WixBundleName]. + + + +Failed to upgrade [WixBundleName]. +Aggiornamento non riuscito [WixBundleName]. + + + +Failed to modify [WixBundleName]. +Impossibile modificare [WixBundleName]. + + + +Failed to repair [WixBundleName]. +Impossibile riparare [WixBundleName]. + + + +One or more issues caused the operation to fail. Please fix the issues and then retry. For more information see the <a href="#">log file</a>. +Uno o più problemi hanno causato il fallimento dell'operazione. Risolvi i problemi e riprova. Per ulteriori informazioni vedere il <a href="#">file log</a>. + + + +To complete the rollback of [WixBundleName], please restart your computer. +Per completare il rollback di [WixBundleName], riavvia il computer. + + + +&Restart +&Riavvia + + + +&Close +&Chiudi + + + + + \ No newline at end of file