]> git.lyx.org Git - features.git/commitdiff
Add button to stop processing
authorJuergen Spitzmueller <spitz@lyx.org>
Mon, 21 Nov 2022 17:56:28 +0000 (18:56 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Mon, 21 Nov 2022 17:56:28 +0000 (18:56 +0100)
(rather than having it stop by clicking on the spinner)

lib/Makefile.am
lib/images/process-stop.svgz [new file with mode: 0644]
src/frontends/qt/GuiView.cpp

index bff08ade78a042958af411b5230af38bff1fdb55..81cf05ee2b274c6701da6f6b0ce9d697085a4ad4 100644 (file)
@@ -661,6 +661,7 @@ dist_images_DATA1X = \
        images/outline-out+rtl.svgz \
        images/outline-up.svgz \
        images/paste.svgz \
+       images/process-stop.svgz \
        images/redo.svgz \
        images/reload.svgz \
        images/search-case-sensitive.svgz \
diff --git a/lib/images/process-stop.svgz b/lib/images/process-stop.svgz
new file mode 100644 (file)
index 0000000..013e4a4
Binary files /dev/null and b/lib/images/process-stop.svgz differ
index d51dcc61430f9eac8fa5464a8c87b08c51478686..2ec50374df890fb2a2c8424efe82ebff32452db7 100644 (file)
@@ -633,6 +633,10 @@ GuiView::GuiView(int id)
        // For Drag&Drop.
        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
        search_mode mode = theGuiApp()->imageSearchMode();
        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
        busySVG->setMaximumSize(busySVG->height() - 5, busySVG->height() - 5);
        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()),
                busySVG, SLOT(show()));
        connect(&d.processing_thread_watcher_, SIGNAL(finished()),
                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_->setAlignment(Qt::AlignCenter);
@@ -656,9 +671,6 @@ GuiView::GuiView(int id)
 
        connect(stat_counts_, SIGNAL(clicked()), this, SLOT(statsPressed()));
 
-
-       QFontMetrics const fm(statusBar()->fontMetrics());
-
        zoom_slider_ = new QSlider(Qt::Horizontal, statusBar());
        // Small size slider for macOS to prevent the status bar from enlarging
        zoom_slider_->setAttribute(Qt::WA_MacSmallSize);
@@ -730,9 +742,6 @@ GuiView::GuiView(int id)
        // enable pinch to zoom
        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);
        shell_escape_ = new QLabel(statusBar());
        shell_escape_->setPixmap(shellescape);