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