Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions src/builder/include/create_gif_page.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,15 @@
#include "batch_output_widget.h"
#include "batch_mode_helper.h"
#include "resolution_widget.h"
#include "progress_widget.h"
#include "converter_runner.h"
#include <QComboBox>
#include <QGroupBox>
#include <QLabel>
#include <QPushButton>
#include <QSpinBox>
#include <QVBoxLayout>

class Converter;
class EncodeParameter;
class ProcessParameter;

class CreateGifPage : public BasePage {
Q_OBJECT

Expand All @@ -52,6 +50,7 @@ private slots:
void OnInputFileSelected(const QString &filePath);
void OnOutputFileSelected(const QString &filePath);
void OnConvertClicked();
void OnConvertFinished(bool success);
void OnFpsChanged(int value);

private:
Expand All @@ -76,11 +75,10 @@ private slots:

// UI Components - Action Section
QPushButton *convertButton;
ProgressWidget *progressWidget;

// Backend
EncodeParameter *encodeParameter;
ProcessParameter *processParameter;
Converter *converter;
ConverterRunner *converterRunner;

// Batch mode helper
BatchModeHelper *batchModeHelper;
Expand Down
59 changes: 25 additions & 34 deletions src/builder/src/create_gif_page.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,11 @@
#include <QHBoxLayout>
#include <QMessageBox>

CreateGifPage::CreateGifPage(QWidget *parent) : BasePage(parent) {
encodeParameter = new EncodeParameter();
processParameter = new ProcessParameter();
converter = new Converter(processParameter, encodeParameter);

CreateGifPage::CreateGifPage(QWidget *parent) : BasePage(parent), converterRunner(nullptr) {
SetupUI();
}

CreateGifPage::~CreateGifPage() {
delete converter;
delete encodeParameter;
delete processParameter;
}

QString CreateGifPage::GetPageTitle() const {
Expand Down Expand Up @@ -119,6 +112,20 @@ void CreateGifPage::SetupUI() {
connect(convertButton, &QPushButton::clicked, this, &CreateGifPage::OnConvertClicked);
mainLayout->addWidget(convertButton);

// Progress Section (placed after button to avoid blank space)
progressWidget = new ProgressWidget(this);
mainLayout->addWidget(progressWidget);

// Create conversion runner
converterRunner = new ConverterRunner(
progressWidget->GetProgressBar(), progressWidget->GetProgressLabel(), convertButton,
tr("Creating GIF..."), tr("Create GIF / Add to Queue"),
tr("Success"), tr("GIF created successfully!"),
tr("Error"), tr("Failed to create GIF."),
this
);
connect(converterRunner, &ConverterRunner::ConversionFinished, this, &CreateGifPage::OnConvertFinished);

// Create batch mode helper
batchModeHelper = new BatchModeHelper(
inputFileSelector, batchOutputWidget, convertButton,
Expand Down Expand Up @@ -199,37 +206,21 @@ void CreateGifPage::OnConvertClicked() {
return;
}

// Get encode parameters
EncodeParameter *tempParam = CreateEncodeParameter();
if (tempParam->get_width() > 0)
encodeParameter->set_width(tempParam->get_width());
if (tempParam->get_height() > 0)
encodeParameter->set_height(tempParam->get_height());
delete tempParam;
// Create parameters
EncodeParameter *encodeParam = CreateEncodeParameter();
ProcessParameter *processParam = new ProcessParameter();

// Get current transcoder from main window
QString transcoderName = TranscoderHelper::GetCurrentTranscoderName(this);

// Set transcoder
if (!converter->set_transcoder(transcoderName.toStdString())) {
QMessageBox::critical(this, "Error", "Failed to initialize transcoder.");
return;
}

// Perform conversion
convertButton->setEnabled(false);
convertButton->setText(tr("Creating GIF..."));

bool result = converter->convert_format(inputPath.toStdString(), outputPath.toStdString());

convertButton->setEnabled(true);
convertButton->setText(tr("Create GIF"));
// Run conversion using ConverterRunner
converterRunner->RunConversion(inputPath, outputPath, encodeParam, processParam, transcoderName);
}

if (result) {
QMessageBox::information(this, "Success", "GIF created successfully!");
} else {
QMessageBox::critical(this, "Error", "Failed to create GIF.");
}
void CreateGifPage::OnConvertFinished(bool success) {
Q_UNUSED(success);
// ConverterRunner handles all UI updates and message boxes
// This slot is kept for potential custom post-processing
}

void CreateGifPage::OnFpsChanged(int value) {
Expand Down
Binary file modified src/resources/lang_chinese.qm
Binary file not shown.
76 changes: 48 additions & 28 deletions src/resources/lang_chinese.ts
Original file line number Diff line number Diff line change
Expand Up @@ -722,14 +722,14 @@ You can install it later by returning to this page.</source>
<context>
<name>CreateGifPage</name>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="65"/>
<location filename="../builder/src/create_gif_page.cpp" line="254"/>
<location filename="../builder/src/create_gif_page.cpp" line="58"/>
<location filename="../builder/src/create_gif_page.cpp" line="245"/>
<source>Input File</source>
<translation>输入文件</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="67"/>
<location filename="../builder/src/create_gif_page.cpp" line="255"/>
<location filename="../builder/src/create_gif_page.cpp" line="60"/>
<location filename="../builder/src/create_gif_page.cpp" line="246"/>
<source>Select a video or image sequence...</source>
<translation>选择视频或图片序列...</translation>
</message>
Expand All @@ -738,8 +738,8 @@ You can install it later by returning to this page.</source>
<translation type="vanished">浏览...</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="76"/>
<location filename="../builder/src/create_gif_page.cpp" line="258"/>
<location filename="../builder/src/create_gif_page.cpp" line="69"/>
<location filename="../builder/src/create_gif_page.cpp" line="249"/>
<source>GIF Settings</source>
<translation>GIF 设置</translation>
</message>
Expand All @@ -756,80 +756,100 @@ You can install it later by returning to this page.</source>
<translation type="vanished">高度(0=自动):</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="100"/>
<location filename="../builder/src/create_gif_page.cpp" line="265"/>
<location filename="../builder/src/create_gif_page.cpp" line="93"/>
<location filename="../builder/src/create_gif_page.cpp" line="256"/>
<source>Output</source>
<translation>输出</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="102"/>
<location filename="../builder/src/create_gif_page.cpp" line="266"/>
<location filename="../builder/src/create_gif_page.cpp" line="95"/>
<location filename="../builder/src/create_gif_page.cpp" line="257"/>
<source>Output file path will be generated automatically...</source>
<translation>输出文件路径将自动生成...</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="226"/>
<location filename="../builder/src/create_gif_page.cpp" line="280"/>
<location filename="../builder/src/create_gif_page.cpp" line="271"/>
<source>Create GIF</source>
<translation>创建 GIF</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="69"/>
<location filename="../builder/src/create_gif_page.cpp" line="62"/>
<source>Select Video File</source>
<translation>选择视频文件</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="68"/>
<location filename="../builder/src/create_gif_page.cpp" line="61"/>
<source>Video Files (*.mp4 *.avi *.mkv *.mov *.flv *.wmv *.webm);;All Files (*.*)</source>
<translation>视频文件 (*.mp4 *.avi *.mkv *.mov *.flv *.wmv *.webm);;所有文件 (*.*)</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="81"/>
<location filename="../builder/src/create_gif_page.cpp" line="259"/>
<location filename="../builder/src/create_gif_page.cpp" line="74"/>
<location filename="../builder/src/create_gif_page.cpp" line="250"/>
<source>Resolution:</source>
<translation>分辨率:</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="103"/>
<location filename="../builder/src/create_gif_page.cpp" line="96"/>
<source>GIF Files (*.gif);;All Files (*.*)</source>
<translation>GIF 文件 (*.gif);;所有文件 (*.*)</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="104"/>
<location filename="../builder/src/create_gif_page.cpp" line="97"/>
<source>Save GIF File</source>
<translation>保存 GIF 文件</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="116"/>
<location filename="../builder/src/create_gif_page.cpp" line="125"/>
<location filename="../builder/src/create_gif_page.cpp" line="277"/>
<location filename="../builder/src/create_gif_page.cpp" line="109"/>
<location filename="../builder/src/create_gif_page.cpp" line="122"/>
<location filename="../builder/src/create_gif_page.cpp" line="132"/>
<location filename="../builder/src/create_gif_page.cpp" line="268"/>
<source>Create GIF / Add to Queue</source>
<translation>创建 GIF / 添加到队列</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="125"/>
<location filename="../builder/src/create_gif_page.cpp" line="275"/>
<location filename="../builder/src/create_gif_page.cpp" line="123"/>
<source>Success</source>
<translation type="unfinished">成功</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="123"/>
<source>GIF created successfully!</source>
<translation>GIF 创建成功!</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="124"/>
<source>Error</source>
<translation type="unfinished">错误</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="124"/>
<source>Failed to create GIF.</source>
<translation>GIF 创建失败。</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="132"/>
<location filename="../builder/src/create_gif_page.cpp" line="266"/>
<source>Add to Queue</source>
<translation>添加到队列</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="193"/>
<location filename="../builder/src/create_gif_page.cpp" line="198"/>
<location filename="../builder/src/create_gif_page.cpp" line="200"/>
<location filename="../builder/src/create_gif_page.cpp" line="205"/>
<source>Warning</source>
<translation>警告</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="193"/>
<location filename="../builder/src/create_gif_page.cpp" line="200"/>
<source>Please select an input file.</source>
<translation>请选择输入文件。</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="198"/>
<location filename="../builder/src/create_gif_page.cpp" line="205"/>
<source>Please specify an output file.</source>
<translation>请指定输出文件。</translation>
</message>
<message>
<location filename="../builder/src/create_gif_page.cpp" line="221"/>
<location filename="../builder/src/create_gif_page.cpp" line="122"/>
<source>Creating GIF...</source>
<translation>正在创建 GIF...</translation>
</message>
Expand Down
Loading