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