22#include < QDir>
33#include < QSettings>
44#include < QDialog>
5+ #include < QStatusBar>
56#include < QFocusEvent>
67
78#include " image_calibrator.h"
@@ -57,7 +58,7 @@ ImageCalibrator::ImageCalibrator(Calibration *conf, QWidget *parent) :
5758 {
5859 if (ui->preview ->mode () == FrameTuneScene::MODE_NONE)
5960 m_matrix->updateScene (generateTarget ());
60- else
61+ else if (!ui-> preview -> isToolBusy ())
6162 frameEdited ();
6263 });
6364
@@ -77,15 +78,20 @@ ImageCalibrator::ImageCalibrator(Calibration *conf, QWidget *parent) :
7778 this , &ImageCalibrator::tempFrameUpdated);
7879
7980 ui->toolDrag ->setShortcut (Qt::Key_D);
80- ui->toolPencil ->setShortcut (Qt::Key_N);
81- ui->toolPicker ->setShortcut (Qt::Key_O);
82- ui->toolRubber ->setShortcut (Qt::Key_R);
81+ // ui->toolPencil->setShortcut(Qt::Key_N);
82+ // ui->toolPicker->setShortcut(Qt::Key_O);
83+ // ui->toolRubber->setShortcut(Qt::Key_R);
84+ // ui->toolSelect->setShortcut(Qt::Key_S);
85+ // ui->toolSelectCopy->setShortcut(Qt::Key_C);
8386
84- ui->toolUndo ->setShortcut (QKeySequence (" Ctrl+Z" ));
85- ui->toolRedo ->setShortcut (QKeySequence (" Ctrl+Y" ));
87+ // ui->toolUndo->setShortcut(QKeySequence("Ctrl+Z"));
88+ // ui->toolRedo->setShortcut(QKeySequence("Ctrl+Y"));
8689
8790 ui->toolDrag ->setChecked (true );
8891
92+ m_status = new QStatusBar (this );
93+ ui->calibratorLayout ->addWidget (m_status, 4 , 0 , 1 , 4 );
94+
8995 QObject::connect (ui->toolDrag , &QToolButton::clicked,
9096 this , &ImageCalibrator::toolChanged);
9197 QObject::connect (ui->toolSelect , &QToolButton::clicked,
@@ -317,6 +323,92 @@ void ImageCalibrator::focusInEvent(QFocusEvent *)
317323 tempFrameUpdatedProceed ();
318324}
319325
326+ void ImageCalibrator::keyPressEvent (QKeyEvent *e)
327+ {
328+ if (e->key () == Qt::Key_Escape)
329+ {
330+ if (ui->preview ->isToolBusy ())
331+ ui->preview ->cancelTool ();
332+ return ;
333+ }
334+
335+ switch (e->key ())
336+ {
337+ case Qt::Key_O:
338+ ui->toolPicker ->click ();
339+ break ;
340+
341+ case Qt::Key_N:
342+ ui->toolPencil ->click ();
343+ break ;
344+
345+ case Qt::Key_L:
346+ ui->toolLine ->click ();
347+ break ;
348+
349+ case Qt::Key_R:
350+ ui->toolRects ->click ();
351+ break ;
352+
353+ case Qt::Key_F:
354+ if (e->modifiers () == (Qt::ControlModifier | Qt::ShiftModifier))
355+ ui->preview ->runAction (FrameTuneScene::ACTION_VFLIP_CUR_FRAME);
356+ if (e->modifiers () == Qt::ControlModifier)
357+ ui->preview ->runAction (FrameTuneScene::ACTION_HFLIP_CUR_FRAME);
358+ break ;
359+
360+ case Qt::Key_E:
361+ if (e->modifiers () == Qt::ControlModifier)
362+ ui->preview ->runAction (FrameTuneScene::ACTION_ERASE_FRAME);
363+ break ;
364+
365+ case Qt::Key_C:
366+ if (e->modifiers () == (Qt::ControlModifier | Qt::ShiftModifier))
367+ ui->preview ->runAction (FrameTuneScene::ACTION_COPY_FRAME_2X_SHRINK);
368+ if (e->modifiers () == Qt::ControlModifier)
369+ ui->preview ->runAction (FrameTuneScene::ACTION_COPY_FRAME);
370+ else
371+ ui->toolSelectCopy ->click ();
372+ break ;
373+
374+ case Qt::Key_V:
375+ if (e->modifiers () == (Qt::ControlModifier | Qt::ShiftModifier))
376+ ui->preview ->runAction (FrameTuneScene::ACTION_PASTE_FRAME_2X_GROW);
377+ if (e->modifiers () == Qt::ControlModifier)
378+ ui->preview ->runAction (FrameTuneScene::ACTION_PASTE_FRAME);
379+ break ;
380+
381+ case Qt::Key_Z:
382+ if (e->modifiers () == (Qt::ControlModifier | Qt::ShiftModifier))
383+ ui->toolRedo ->click ();
384+ if (e->modifiers () == Qt::ControlModifier)
385+ ui->toolUndo ->click ();
386+ break ;
387+
388+ case Qt::Key_Y:
389+ if (e->modifiers () == Qt::ControlModifier)
390+ ui->toolUndo ->click ();
391+ break ;
392+
393+ case Qt::Key_S:
394+ if (e->modifiers () == Qt::ControlModifier)
395+ ui->WritePNG ->click ();
396+ else
397+ ui->toolSelect ->click ();
398+ break ;
399+ }
400+
401+ QDialog::keyPressEvent (e);
402+ }
403+
404+ void ImageCalibrator::keyReleaseEvent (QKeyEvent *e)
405+ {
406+ if (e->key () == Qt::Key_Escape)
407+ return ;
408+
409+ QDialog::keyPressEvent (e);
410+ }
411+
320412
321413void ImageCalibrator::on_FrameX_valueChanged (int arg1)
322414{
@@ -822,9 +914,7 @@ void ImageCalibrator::on_WritePNG_GIF_clicked()
822914 QImage targetGif = target.toImage ();
823915 Graphics::toMaskedGif (targetGif, m_gifPath);
824916 saveCalibrates ();
825- QMessageBox::information (this ,
826- " Image was overwritten" ,
827- " Calibrated sprite was saved in:\n " + m_pngPath + " \n " + m_gifPath, QMessageBox::Ok);
917+ m_status->showMessage (" Calibrated sprite was saved in: " + m_pngPath + " - " + m_gifPath, 5000 );
828918}
829919
830920void ImageCalibrator::on_WritePNG_clicked ()
@@ -833,9 +923,7 @@ void ImageCalibrator::on_WritePNG_clicked()
833923 QPixmap target = generateTarget ();
834924 target.save (m_pngPath, " PNG" );
835925 saveCalibrates ();
836- QMessageBox::information (this ,
837- " Image was overwritten" ,
838- " Calibrated sprite was saved in:\n " + m_pngPath, QMessageBox::Ok);
926+ m_status->showMessage (" Calibrated sprite was saved in: " + m_pngPath, 5000 );
839927}
840928
841929void ImageCalibrator::on_WriteGIF_clicked ()
@@ -844,9 +932,7 @@ void ImageCalibrator::on_WriteGIF_clicked()
844932 QImage target = generateTarget ().toImage ();
845933 Graphics::toMaskedGif (target, m_gifPath);
846934 saveCalibrates ();
847- QMessageBox::information (this ,
848- " Image was overwritten" ,
849- " Calibrated sprite was saved in:\n " + m_gifPath, QMessageBox::Ok);
935+ m_status->showMessage (" Calibrated sprite was saved in:\n " + m_gifPath, 5000 );
850936}
851937
852938void ImageCalibrator::updateControls ()
@@ -1181,6 +1267,12 @@ void ImageCalibrator::historyUndo(bool)
11811267 if (!his.canUndo ())
11821268 return ;
11831269
1270+ if (ui->preview ->isToolBusy ())
1271+ {
1272+ ui->preview ->cancelTool ();
1273+ return ;
1274+ }
1275+
11841276 updateCurrentFrame (his.undo (setup));
11851277 updateScene ();
11861278 m_matrix->updateScene (generateTarget ());
@@ -1195,6 +1287,9 @@ void ImageCalibrator::historyRedo(bool)
11951287 if (!his.canRedo ())
11961288 return ;
11971289
1290+ if (ui->preview ->isToolBusy ())
1291+ return ; // Can't redo while current tool is busy
1292+
11981293 updateCurrentFrame (his.redo (setup));
11991294 updateScene ();
12001295 m_matrix->updateScene (generateTarget ());
0 commit comments