Add button to stop processing

(rather than having it stop by clicking on the spinner)
This commit is contained in:
Juergen Spitzmueller 2022-11-21 18:56:28 +01:00
parent 0264141b3c
commit 869247b617
3 changed files with 17 additions and 7 deletions

View File

@ -661,6 +661,7 @@ dist_images_DATA1X = \
images/outline-out+rtl.svgz \ images/outline-out+rtl.svgz \
images/outline-up.svgz \ images/outline-up.svgz \
images/paste.svgz \ images/paste.svgz \
images/process-stop.svgz \
images/redo.svgz \ images/redo.svgz \
images/reload.svgz \ images/reload.svgz \
images/search-case-sensitive.svgz \ images/search-case-sensitive.svgz \

Binary file not shown.

View File

@ -633,6 +633,10 @@ GuiView::GuiView(int id)
// For Drag&Drop. // For Drag&Drop.
setAcceptDrops(true); setAcceptDrops(true);
QFontMetrics const fm(statusBar()->fontMetrics());
int const iconheight = max(int(d.normalIconSize), fm.height());
QSize const iconsize(iconheight, iconheight);
// add busy indicator to statusbar // add busy indicator to statusbar
search_mode mode = theGuiApp()->imageSearchMode(); search_mode mode = theGuiApp()->imageSearchMode();
QString fn = toqstr(lyx::libFileSearch("images", "busy", "svgz", mode).absFileName()); QString fn = toqstr(lyx::libFileSearch("images", "busy", "svgz", mode).absFileName());
@ -641,12 +645,23 @@ GuiView::GuiView(int id)
// make busy indicator square with 5px margins // make busy indicator square with 5px margins
busySVG->setMaximumSize(busySVG->height() - 5, busySVG->height() - 5); busySVG->setMaximumSize(busySVG->height() - 5, busySVG->height() - 5);
busySVG->hide(); busySVG->hide();
// Add cancel button
QPixmap ps = QIcon(getPixmap("images/", "process-stop", "svgz")).pixmap(iconsize);
GuiClickableLabel * processStop = new GuiClickableLabel(statusBar());
processStop->setPixmap(ps);
processStop->setToolTip(qt_("Click here to stop export/output process"));
processStop->hide();
statusBar()->addPermanentWidget(processStop);
connect(&d.processing_thread_watcher_, SIGNAL(started()), connect(&d.processing_thread_watcher_, SIGNAL(started()),
busySVG, SLOT(show())); busySVG, SLOT(show()));
connect(&d.processing_thread_watcher_, SIGNAL(finished()), connect(&d.processing_thread_watcher_, SIGNAL(finished()),
busySVG, SLOT(hide())); busySVG, SLOT(hide()));
connect(busySVG, SIGNAL(pressed()), this, SLOT(checkCancelBackground())); connect(&d.processing_thread_watcher_, SIGNAL(started()),
processStop, SLOT(show()));
connect(&d.processing_thread_watcher_, SIGNAL(finished()),
processStop, SLOT(hide()));
connect(processStop, SIGNAL(pressed()), this, SLOT(checkCancelBackground()));
stat_counts_ = new GuiClickableLabel(statusBar()); stat_counts_ = new GuiClickableLabel(statusBar());
stat_counts_->setAlignment(Qt::AlignCenter); stat_counts_->setAlignment(Qt::AlignCenter);
@ -656,9 +671,6 @@ GuiView::GuiView(int id)
connect(stat_counts_, SIGNAL(clicked()), this, SLOT(statsPressed())); connect(stat_counts_, SIGNAL(clicked()), this, SLOT(statsPressed()));
QFontMetrics const fm(statusBar()->fontMetrics());
zoom_slider_ = new QSlider(Qt::Horizontal, statusBar()); zoom_slider_ = new QSlider(Qt::Horizontal, statusBar());
// Small size slider for macOS to prevent the status bar from enlarging // Small size slider for macOS to prevent the status bar from enlarging
zoom_slider_->setAttribute(Qt::WA_MacSmallSize); zoom_slider_->setAttribute(Qt::WA_MacSmallSize);
@ -730,9 +742,6 @@ GuiView::GuiView(int id)
// enable pinch to zoom // enable pinch to zoom
grabGesture(Qt::PinchGesture); grabGesture(Qt::PinchGesture);
int const iconheight = max(int(d.normalIconSize), fm.height());
QSize const iconsize(iconheight, iconheight);
QPixmap shellescape = QIcon(getPixmap("images/", "emblem-shellescape", "svgz,png")).pixmap(iconsize); QPixmap shellescape = QIcon(getPixmap("images/", "emblem-shellescape", "svgz,png")).pixmap(iconsize);
shell_escape_ = new QLabel(statusBar()); shell_escape_ = new QLabel(statusBar());
shell_escape_->setPixmap(shellescape); shell_escape_->setPixmap(shellescape);