1 #pragma once 2 3 #include "common/common_pch.h" 4 5 #include "mkvtoolnix-gui/main_window/tool_base.h" 6 7 class QMenu; 8 9 namespace mtx::gui { 10 11 namespace Jobs { 12 class Job; 13 } 14 15 namespace WatchJobs { 16 17 namespace Ui { 18 class Tool; 19 } 20 21 class Tab; 22 23 class Tool : public ToolBase { 24 Q_OBJECT 25 protected: 26 // UI stuff: 27 std::unique_ptr<Ui::Tool> ui; 28 Tab *m_currentJobTab{}; 29 QMenu *m_jobOutputMenu; 30 31 public: 32 explicit Tool(QWidget *parent, QMenu *jobOutputMenu); 33 ~Tool(); 34 35 Tab *currentJobTab(); 36 Tab *currentTab(); 37 38 void viewOutput(mtx::gui::Jobs::Job &job); 39 40 int tabIndexForJobID(uint64_t id) const; 41 42 virtual void setupUi() override; 43 virtual void setupActions() override; 44 virtual std::pair<QString, QString> nextPreviousWindowActionTexts() const override; 45 46 public Q_SLOTS: 47 virtual void toolShown() override; 48 virtual void closeTab(int idx); 49 virtual void closeCurrentTab(); 50 virtual void closeAllTabs(); 51 virtual void saveCurrentTabOutput(); 52 virtual void saveAllTabs(); 53 virtual void enableMenuActions(); 54 virtual void retranslateUi(); 55 virtual void switchToCurrentJobTab(); 56 57 protected: 58 virtual void forEachTab(std::function<void(Tab &)> const &worker); 59 }; 60 61 }} 62