1 // Copyright 2018 Dolphin Emulator Project 2 // Licensed under GPLv2+ 3 // Refer to the license.txt file included. 4 5 #pragma once 6 7 #include <QMap> 8 #include <QString> 9 #include <QStringList> 10 #include <QWidget> 11 12 class QCompleter; 13 class QMenu; 14 class QTextEdit; 15 16 class GameConfigEdit : public QWidget 17 { 18 public: 19 explicit GameConfigEdit(QWidget* parent, QString path, bool read_only); 20 21 protected: 22 void keyPressEvent(QKeyEvent* e) override; 23 void focusInEvent(QFocusEvent* e) override; 24 25 private: 26 void CreateWidgets(); 27 void ConnectWidgets(); 28 void AddMenubarOptions(); 29 30 void LoadFile(); 31 void SaveFile(); 32 33 void OnSelectionChanged(); 34 void OnAutoComplete(const QString& completion); 35 void OpenExternalEditor(); 36 37 QString GetTextUnderCursor(); 38 39 void AddBoolOption(QMenu* menu, const QString& name, const QString& section, const QString& key); 40 41 void SetOption(const QString& section, const QString& key, const QString& value); 42 43 void AddDescription(const QString& keyword, const QString& description); 44 45 QCompleter* m_completer; 46 QStringList m_completions; 47 QMenu* m_menu; 48 QTextEdit* m_edit; 49 50 const QString m_path; 51 52 bool m_read_only; 53 54 QMap<QString, QString> m_keyword_map; 55 }; 56