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