diff --git a/stuff/profiles/layouts/menubar.xml b/stuff/profiles/layouts/menubar.xml index 78ff09e9..e334b254 100644 --- a/stuff/profiles/layouts/menubar.xml +++ b/stuff/profiles/layouts/menubar.xml @@ -13,6 +13,7 @@ MI_SaveLevelAs MI_Render + MI_SaveAndRender MI_ShortcutPopup diff --git a/stuff/profiles/layouts/rooms/Default/menubar_template.xml b/stuff/profiles/layouts/rooms/Default/menubar_template.xml index e13f472b..b0e67801 100644 --- a/stuff/profiles/layouts/rooms/Default/menubar_template.xml +++ b/stuff/profiles/layouts/rooms/Default/menubar_template.xml @@ -245,6 +245,7 @@ MI_OutputSettings MI_Render + MI_SaveAndRender MI_FastRender diff --git a/toonz/sources/toonz/mainwindow.cpp b/toonz/sources/toonz/mainwindow.cpp index e2cdcb58..99b37426 100644 --- a/toonz/sources/toonz/mainwindow.cpp +++ b/toonz/sources/toonz/mainwindow.cpp @@ -1811,7 +1811,12 @@ void MainWindow::defineActions() { tr("Control the settings that will be used to preview the scene.")); menuAct->setIcon(createQIcon("preview_settings")); menuAct = createMenuRenderAction( - MI_Render, tr("&Save and Render"), "Ctrl+Shift+R", + MI_Render, tr("&Render"), "Ctrl+Shift+R", + tr("Renders according to the settings and " + "location set in Output Settings.")); + menuAct->setIcon(createQIcon("render")); + menuAct = createMenuRenderAction( + MI_SaveAndRender, tr("&Save and Render"), "", tr("Saves the current scene and renders according to the settings and " "location set in Output Settings.")); menuAct->setIcon(createQIcon("render")); diff --git a/toonz/sources/toonz/menubar.cpp b/toonz/sources/toonz/menubar.cpp index 1ed5c944..58be0332 100644 --- a/toonz/sources/toonz/menubar.cpp +++ b/toonz/sources/toonz/menubar.cpp @@ -622,7 +622,7 @@ QMenuBar *StackedMenuBar::createFullMenuBar() { addMenuItem(renderMenu, MI_SavePreviewedFrames); renderMenu->addSeparator(); addMenuItem(renderMenu, MI_OutputSettings); - addMenuItem(renderMenu, MI_Render); + addMenuItem(renderMenu, MI_SaveAndRender); renderMenu->addSeparator(); addMenuItem(renderMenu, MI_FastRender); diff --git a/toonz/sources/toonz/menubarcommandids.h b/toonz/sources/toonz/menubarcommandids.h index d5dd09a1..e87676bd 100644 --- a/toonz/sources/toonz/menubarcommandids.h +++ b/toonz/sources/toonz/menubarcommandids.h @@ -48,6 +48,7 @@ #define MI_OutputSettings "MI_OutputSettings" #define MI_PreviewSettings "MI_PreviewSettings" #define MI_Render "MI_Render" +#define MI_SaveAndRender "MI_SaveAndRender" #define MI_FastRender "MI_FastRender" #define MI_Preview "MI_Preview" #define MI_SoundTrack "MI_SoundTrack" diff --git a/toonz/sources/toonz/outputsettingspopup.cpp b/toonz/sources/toonz/outputsettingspopup.cpp index 51e8c36c..01c98f0f 100644 --- a/toonz/sources/toonz/outputsettingspopup.cpp +++ b/toonz/sources/toonz/outputsettingspopup.cpp @@ -222,14 +222,20 @@ OutputSettingsPopup::OutputSettingsPopup(bool isPreview) QPushButton *removePresetButton = NULL; m_dominantFieldOm = 0; - m_renderButton = new QPushButton(tr("Save and Render"), this); - if (isPreview) m_renderButton->setText("Preview"); + m_renderButton = new QPushButton(tr("Render"), this); + m_saveAndRenderButton = new QPushButton(tr("Save and Render"), this); + if (isPreview) { + m_renderButton->setText("Preview"); + m_saveAndRenderButton->hide(); + } if (!isPreview) { showOtherSettingsButton = new QPushButton("", this); otherSettingsLabel = new QLabel(tr("Other Settings"), this); otherSettingsFrame = new QFrame(this); m_renderButton->setIcon(createQIcon("render")); m_renderButton->setIconSize(QSize(20, 20)); + m_saveAndRenderButton->setIcon(createQIcon("render")); + m_saveAndRenderButton->setIconSize(QSize(20, 20)); // Board m_addBoard = new DVGui::CheckBox(tr("Add Clapperboard"), this); @@ -612,7 +618,10 @@ OutputSettingsPopup::OutputSettingsPopup(bool isPreview) advancedSettingsBox->setLayout(fileSetBoxLay); m_topLayout->addWidget(advancedSettingsBox, 0); - m_topLayout->addWidget(m_renderButton); + QHBoxLayout* renderButtonLayout = new QHBoxLayout(this); + renderButtonLayout->addWidget(m_renderButton); + renderButtonLayout->addWidget(m_saveAndRenderButton); + m_topLayout->addLayout(renderButtonLayout); m_topLayout->addStretch(1); } @@ -632,6 +641,8 @@ OutputSettingsPopup::OutputSettingsPopup(bool isPreview) } ret = ret && connect(m_renderButton, SIGNAL(pressed()), this, SLOT(onRenderClicked())); + ret = ret && connect(m_saveAndRenderButton, SIGNAL(pressed()), this, + SLOT(onSaveAndRenderClicked())); ret = ret && connect(m_outputCameraOm, SIGNAL(currentIndexChanged(const QString &)), SLOT(onCameraChanged(const QString &))); @@ -790,6 +801,12 @@ void OutputSettingsPopup::onRenderClicked() { //----------------------------------------------------------------------------- +void OutputSettingsPopup::onSaveAndRenderClicked() { + CommandManager::instance()->execute("MI_SaveAndRender"); +} + +//----------------------------------------------------------------------------- + /*! Update all field value take care current scene output properties. */ void OutputSettingsPopup::updateField() { diff --git a/toonz/sources/toonz/outputsettingspopup.h b/toonz/sources/toonz/outputsettingspopup.h index 723a34af..d42b31a6 100644 --- a/toonz/sources/toonz/outputsettingspopup.h +++ b/toonz/sources/toonz/outputsettingspopup.h @@ -50,6 +50,7 @@ class OutputSettingsPopup : public DVGui::Dialog { DVGui::DoubleLineEdit *m_frameRateFld; QPushButton *m_fileFormatButton; QPushButton *m_renderButton; + QPushButton *m_saveAndRenderButton; CameraSettingsPopup *m_cameraSettings; QComboBox *m_presetCombo; @@ -94,6 +95,7 @@ protected slots: void onStereoChecked(int); void onStereoChanged(); void onRenderClicked(); + void onSaveAndRenderClicked(); /*-- OutputSettingsのPreset登録/削除/選択 --*/ void onAddPresetButtonPressed(); diff --git a/toonz/sources/toonz/rendercommand.cpp b/toonz/sources/toonz/rendercommand.cpp index 811beacd..003906eb 100644 --- a/toonz/sources/toonz/rendercommand.cpp +++ b/toonz/sources/toonz/rendercommand.cpp @@ -174,6 +174,7 @@ public: , m_timeStretchFactor(1) , m_multimediaRender(0) { setCommandHandler("MI_Render", this, &RenderCommand::onRender); + setCommandHandler("MI_SaveAndRender", this, &RenderCommand::onSaveAndRender); setCommandHandler("MI_FastRender", this, &RenderCommand::onFastRender); setCommandHandler("MI_Preview", this, &RenderCommand::onPreview); } @@ -182,6 +183,7 @@ public: void rasterRender(bool isPreview); void multimediaRender(); void onRender(); + void onSaveAndRender(); void onFastRender(); void onPreview(); static void resetBgColor(); @@ -747,14 +749,22 @@ void RenderCommand::multimediaRender() { //=================================================================== void RenderCommand::onRender() { - bool saved = false; - saved = IoCmd::saveAll(); - if (!saved) { - return; - } doRender(false); } +//=================================================================== + +void RenderCommand::onSaveAndRender() { + bool saved = false; + saved = IoCmd::saveAll(); + if (!saved) { + return; + } + doRender(false); +} + +//=================================================================== + void RenderCommand::onFastRender() { TOutputProperties *prop = TApp::instance() ->getCurrentScene() @@ -787,6 +797,8 @@ void RenderCommand::onFastRender() { prop->setPath(currPath); } +//--------------------------------------------------------- + void RenderCommand::onPreview() { doRender(true); } //---------------------------------------------------------