1 #pragma once
2 
3 #include "common/common_pch.h"
4 
5 #include "mkvtoolnix-gui/main_window/tool_base.h"
6 #include "mkvtoolnix-gui/util/files_drag_drop_handler.h"
7 #include "mkvtoolnix-gui/util/modify_tracks_submenu.h"
8 
9 class QDragEnterEvent;
10 class QDropEvent;
11 class QMenu;
12 
13 namespace mtx::gui::HeaderEditor {
14 
15 namespace Ui {
16 class Tool;
17 }
18 
19 class Tab;
20 
21 class Tool : public ToolBase {
22   Q_OBJECT
23 
24 protected:
25   // UI stuff:
26   std::unique_ptr<Ui::Tool> ui;
27   QMenu *m_headerEditorMenu, *m_languageShortcutsMenu{};
28   mtx::gui::Util::FilesDragDropHandler m_filesDDHandler;
29   mtx::gui::Util::ModifyTracksSubmenu m_modifyTracksSubmenu;
30 
31 public:
32   explicit Tool(QWidget *parent, QMenu *headerEditorMenu);
33   ~Tool();
34 
35   virtual void setupUi() override;
36   virtual void setupActions() override;
37   virtual std::pair<QString, QString> nextPreviousWindowActionTexts() const override;
38 
39   virtual void dragEnterEvent(QDragEnterEvent *event) override;
40   virtual void dropEvent(QDropEvent *event) override;
41 
42 public Q_SLOTS:
43   virtual void applyPreferences();
44   virtual void retranslateUi();
45   virtual void toolShown() override;
46   virtual void selectFileToOpen();
47   virtual void save();
48   virtual void saveAllTabs();
49   virtual void validate();
50   virtual bool closeTab(int index);
51   virtual void closeCurrentTab();
52   virtual void closeSendingTab();
53   virtual bool closeAllTabs();
54   virtual void reload();
55   virtual void openFiles(QStringList const &fileNames);
56   virtual void openFilesFromCommandLine(QStringList const &fileNames);
57   virtual void enableMenuActions();
58   virtual void showTab(Tab &tab);
59   virtual void toggleTrackFlag();
60   virtual void changeTrackLanguage(QString const &formattedLanguage);
61 
62 protected:
63   virtual void setupModifyTracksMenu();
64   virtual void openFile(QString const &fileName);
65   virtual void showHeaderEditorsWidget();
66   virtual Tab *currentTab();
67 
68   virtual void forEachTab(std::function<void(Tab &)> const &worker);
69 };
70 
71 }
72