1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-26 01:35:21 +03:00

Editor getting some functionality

This commit is contained in:
Kjell Kernen 2014-02-07 03:28:32 +01:00
parent c7b7cd2ba9
commit 98779da0cf
93 changed files with 1234 additions and 810 deletions

View file

@ -7,14 +7,39 @@
#include "splashlibrary.h"
#include "flashinterface.h"
Side::Side(){
imageLabel = 0;
fileNameEdit = 0;
saveButton = 0;
source=new Source;
*source = UNDEFINED;
}
void Side::copyImage( Side side ){
if ((*source!=UNDEFINED) && (*side.source!=UNDEFINED))
imageLabel->setPixmap(*side.imageLabel->pixmap());
}
customizeSplashDialog::customizeSplashDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::customizeSplashDialog)
{
ui->setupUi(this);
ui->leftLibraryButton->setIcon(CompanionIcon("library.png"));
ui->HowToLabel->clear();
ui->HowToLabel->append("<center>" + tr("Select an original firmware file") + "</center>");
ui->rightLibraryButton->setIcon(CompanionIcon("library.png"));
left.imageLabel = ui->leftImageLabel;
right.imageLabel = ui->rightImageLabel;
left.fileNameEdit = ui->leftFileNameEdit;
right.fileNameEdit = ui->rightFileNameEdit;
left.saveButton = ui->leftSaveButton;
right.saveButton = ui->rightSaveButton;
left.libraryButton = ui->leftLibraryButton;
right.libraryButton = ui->rightLibraryButton;
left.invertButton = ui->leftInvertButton;
right.invertButton = ui->rightInvertButton;
resize(0,0);
}
customizeSplashDialog::~customizeSplashDialog()
@ -22,95 +47,95 @@ customizeSplashDialog::~customizeSplashDialog()
delete ui;
}
void customizeSplashDialog::on_leftLoadButton_clicked()
void customizeSplashDialog::on_copyRightToLeftButton_clicked() {
left.copyImage(right);
}
void customizeSplashDialog::on_copyLeftToRightButton_clicked() {
right.copyImage(left);
}
void customizeSplashDialog::on_leftLoadFwButton_clicked() {loadFwButton_clicked(left);}
void customizeSplashDialog::on_rightLoadFwButton_clicked() {loadFwButton_clicked(right);}
void customizeSplashDialog::loadFwButton_clicked(Side side)
{
QSettings settings;
QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), settings.value("lastFlashDir").toString(), FLASH_FILES_FILTER);
if (!fileName.isEmpty()) {
ui->rightLoadButton->setDisabled(true);
ui->leftLibraryButton->setDisabled(true);
ui->leftSaveButton->setDisabled(true);
ui->rightSaveButton->setDisabled(true);
ui->rightFileName->clear();
ui->leftImageLabel->clear();
ui->HowToLabel->clear();
ui->HowToLabel->setStyleSheet("background:rgb(255, 255, 0)");
QFile file(fileName);
if (!file.exists()) {
ui->leftFileName->clear();
ui->HowToLabel->append("<center>" + tr("Select an original firmware file") + "</center>");
if (fileName.isEmpty() || !file.exists())
return;
}
if (fileName.isEmpty()) {
ui->leftFileName->clear();
ui->HowToLabel->append("<center>" + tr("Select an original firmware file") + "</center>");
return;
}
ui->leftFileName->setText(fileName);
FlashInterface flash(fileName);
if (flash.hasSplash()) {
ui->HowToLabel->append("<center>" + tr("Select an image to customize your splash <br />or save actual firmware splash") + "</center>");
ui->rightLoadButton->setEnabled(true);
ui->leftLibraryButton->setEnabled(true);
ui->rightSaveButton->setEnabled(true);
ui->leftImageLabel->setPixmap(QPixmap::fromImage(flash.getSplash()));
ui->leftImageLabel->setFixedSize(flash.getSplashWidth()*2,flash.getSplashHeight()*2);
} else {
if (!flash.hasSplash()) {
QMessageBox::information(this, tr("Error"), tr("Could not find bitmap to replace in file"));
return;
}
side.saveButton->setEnabled(true);
side.imageLabel->setPixmap(QPixmap::fromImage(flash.getSplash()));
side.imageLabel->setFixedSize(flash.getSplashWidth()*2,flash.getSplashHeight()*2);
side.fileNameEdit->setText(fileName);
settings.setValue("lastFlashDir", QFileInfo(fileName).dir().absolutePath());
*side.source=FW;
side.saveButton->setEnabled(true);
side.libraryButton->setEnabled(true);
side.invertButton->setEnabled(true);
}
}
void customizeSplashDialog::on_rightLoadButton_clicked() {
void customizeSplashDialog::on_leftLoadPictButton_clicked() {loadPictButton_clicked(left);}
void customizeSplashDialog::on_rightLoadPictButton_clicked() {loadPictButton_clicked(right);}
void customizeSplashDialog::loadPictButton_clicked(Side side)
{
QString supportedImageFormats;
for (int formatIndex = 0; formatIndex < QImageReader::supportedImageFormats().count(); formatIndex++) {
supportedImageFormats += QLatin1String(" *.") + QImageReader::supportedImageFormats()[formatIndex];
}
QSettings settings;
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image to load"), settings.value("lastImagesDir").toString(), tr("Images (%1)").arg(supportedImageFormats));
if (!fileName.isEmpty()) {
settings.setValue("lastImagesDir", QFileInfo(fileName).dir().absolutePath());
QImage image(fileName);
if (image.isNull()) {
QMessageBox::critical(this, tr("Error"), tr("Cannot load %1.").arg(fileName));
return;
}
ui->HowToLabel->clear();
ui->rightFileName->setText(fileName);
if (ui->leftImageLabel->width()==424) {
image=image.convertToFormat(QImage::Format_RGB32);
QRgb col;
int gray;
int width = image.width();
int height = image.height();
for (int i = 0; i < width; ++i)
{
for (int j = 0; j < height; ++j)
{
col = image.pixel(i, j);
gray = qGray(col);
image.setPixel(i, j, qRgb(gray, gray, gray));
}
}
ui->leftImageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->leftImageLabel->width()/2, ui->leftImageLabel->height()/2)));
} else {
ui->leftImageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->leftImageLabel->width()/2, ui->leftImageLabel->height()/2).convertToFormat(QImage::Format_Mono)));
}
ui->leftSaveButton->setEnabled(true);
ui->HowToLabel->append("<center>" + tr("Save your custimized firmware") + "</center>");
if (fileName.isEmpty()){
return;
}
QImage image(fileName);
if (image.isNull()) {
QMessageBox::critical(this, tr("Error"), tr("Cannot load %1.").arg(fileName));
return;
}
if (side.imageLabel->width()==424) {
image=image.convertToFormat(QImage::Format_RGB32);
QRgb col;
int gray;
int width = image.width();
int height = image.height();
for (int i = 0; i < width; ++i)
{
for (int j = 0; j < height; ++j)
{
col = image.pixel(i, j);
gray = qGray(col);
image.setPixel(i, j, qRgb(gray, gray, gray));
}
}
side.imageLabel->setPixmap(QPixmap::fromImage(image.scaled(side.imageLabel->width()/2, side.imageLabel->height()/2)));
} else {
side.imageLabel->setPixmap(QPixmap::fromImage(image.scaled(side.imageLabel->width()/2, side.imageLabel->height()/2).convertToFormat(QImage::Format_Mono)));
}
settings.setValue("lastImagesDir", QFileInfo(fileName).dir().absolutePath());
side.fileNameEdit->setText(fileName);
*side.source=PICT;
side.saveButton->setEnabled(true);
side.libraryButton->setEnabled(true);
side.invertButton->setEnabled(true);
}
void customizeSplashDialog::on_rightLibraryButton_clicked() {
}
void customizeSplashDialog::on_leftLibraryButton_clicked() {
void customizeSplashDialog::on_leftLibraryButton_clicked(){libraryButton_clicked(left);}
void customizeSplashDialog::on_rightLibraryButton_clicked(){libraryButton_clicked(right);}
void customizeSplashDialog::libraryButton_clicked( Side side )
{
QString fileName;
splashLibrary *ld = new splashLibrary(this,&fileName);
@ -121,9 +146,7 @@ void customizeSplashDialog::on_leftLibraryButton_clicked() {
QMessageBox::critical(this, tr("Error"), tr("Cannot load %1.").arg(fileName));
return;
}
ui->HowToLabel->clear();
ui->rightFileName->setText(fileName);
if (ui->leftImageLabel->width()==424) {
if (side.imageLabel->width()==424) {
image=image.convertToFormat(QImage::Format_RGB32);
QRgb col;
int gray;
@ -138,64 +161,52 @@ void customizeSplashDialog::on_leftLibraryButton_clicked() {
image.setPixel(i, j, qRgb(gray, gray, gray));
}
}
ui->leftImageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->leftImageLabel->width()/2, ui->leftImageLabel->height()/2)));
side.imageLabel->setPixmap(QPixmap::fromImage(image.scaled(side.imageLabel->width()/2, side.imageLabel->height()/2)));
} else {
ui->leftImageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->leftImageLabel->width()/2, ui->leftImageLabel->height()/2).convertToFormat(QImage::Format_Mono)));
side.imageLabel->setPixmap(QPixmap::fromImage(image.scaled(side.imageLabel->width()/2, side.imageLabel->height()/2).convertToFormat(QImage::Format_Mono)));
}
ui->leftSaveButton->setEnabled(true);
ui->HowToLabel->append("<center>" + tr("Save your custimized firmware") + "</center>");
}
}
void customizeSplashDialog::on_leftSaveButton_clicked()
void customizeSplashDialog::on_leftSaveButton_clicked(){saveButton_clicked(left);}
void customizeSplashDialog::on_rightSaveButton_clicked(){saveButton_clicked(right);}
void customizeSplashDialog::saveButton_clicked(Side side)
{
QString fileName;
QSettings settings;
ui->HowToLabel->clear();
fileName = QFileDialog::getSaveFileName(this, tr("Write to file"), settings.value("lastFlashDir").toString(), FLASH_FILES_FILTER, 0, QFileDialog::DontConfirmOverwrite);
if (fileName.isEmpty()) {
return;
QString fileName = side.fileNameEdit->text();
if (*side.source == FW)
{
FlashInterface flash(fileName);
if (!flash.hasSplash()) {
QMessageBox::critical(this, tr("Error"), tr("Could not store image in firmware file %1").arg(fileName));
return;
}
QImage image = side.imageLabel->pixmap()->toImage().scaled(flash.getSplashWidth(), flash.getSplashHeight());
if (flash.setSplash(image) && (flash.saveFlash(fileName) > 0))
settings.setValue("lastFlashDir", QFileInfo(fileName).dir().absolutePath());
else
QMessageBox::critical(this, tr("Error"), tr("Could not store image in firmware file %1").arg(fileName));
}
FlashInterface flash(ui->leftFileName->text());
if (!flash.hasSplash()) {
QMessageBox::critical(this, tr("Error"), tr("Error reading file %1").arg(fileName));
return;
}
settings.setValue("lastFlashDir", QFileInfo(fileName).dir().absolutePath());
QImage image = ui->leftImageLabel->pixmap()->toImage().scaled(flash.getSplashWidth(), flash.getSplashHeight());
flash.setSplash(image);
if (flash.saveFlash(fileName) > 0) {
ui->HowToLabel->setStyleSheet("background:rgb(0,255.0);");
ui->HowToLabel->append("<center>" + tr("Firmware correctly saved.") + "</center>");
} else {
ui->HowToLabel->setStyleSheet("background:rgb(255.0.0);");
ui->HowToLabel->append("<center>" + tr("Firmware not saved.") + "</center>");
else if (*side.source == PICT)
{
if (!fileName.isEmpty()) {
QImage image = side.imageLabel->pixmap()->toImage().scaled(side.imageLabel->width()/2, side.imageLabel->height()/2).convertToFormat(QImage::Format_Indexed8);
if (image.save(fileName))
settings.setValue("lastImagesDir", QFileInfo(fileName).dir().absolutePath());
else
QMessageBox::critical(this, tr("Error"), tr("The image file %1 could not be stored").arg(fileName));
}
}
}
void customizeSplashDialog::on_rightInvertButton_clicked()
void customizeSplashDialog::on_leftInvertButton_clicked(){invertButton_clicked(left);}
void customizeSplashDialog::on_rightInvertButton_clicked(){invertButton_clicked(right);}
void customizeSplashDialog::invertButton_clicked(Side side)
{
QImage image = ui->rightImageLabel->pixmap()->toImage();
QImage image = side.imageLabel->pixmap()->toImage();
image.invertPixels();
ui->rightImageLabel->setPixmap(QPixmap::fromImage(image));
side.imageLabel->setPixmap(QPixmap::fromImage(image));
}
void customizeSplashDialog::on_leftInvertButton_clicked()
{
QImage image = ui->leftImageLabel->pixmap()->toImage();
image.invertPixels();
ui->leftImageLabel->setPixmap(QPixmap::fromImage(image));
}
void customizeSplashDialog::on_rightSaveButton_clicked()
{
QString fileName;
QSettings settings;
fileName = QFileDialog::getSaveFileName(this, tr("Write to file"), settings.value("lastImagesDir").toString(), tr("PNG images (*.png);;"), 0, QFileDialog::DontConfirmOverwrite);
if (!fileName.isEmpty()) {
settings.setValue("lastImagesDir", QFileInfo(fileName).dir().absolutePath());
QImage image = ui->leftImageLabel->pixmap()->toImage().scaled(ui->leftImageLabel->width()/2, ui->leftImageLabel->height()/2).convertToFormat(QImage::Format_Indexed8);
image.save(fileName, "PNG");
}
}