summaryrefslogtreecommitdiff
path: root/src/editexecutablesdialog.h
blob: bb1538efaca62a7b96231ff221b24f2270021417 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
Copyright (C) 2012 Sebastian Herbord. All rights reserved.

This file is part of Mod Organizer.

Mod Organizer is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Mod Organizer is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Mod Organizer.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef EDITEXECUTABLESDIALOG_H
#define EDITEXECUTABLESDIALOG_H

#include "tutorabledialog.h"
#include <QListWidgetItem>
#include "executableslist.h"
#include "profile.h"
#include "iplugingame.h"
#include <QTimer>
#include <QAbstractButton>

namespace Ui {
    class EditExecutablesDialog;
}


class ModList;


/**
 * @brief Dialog to manage the list of executables
 **/
class EditExecutablesDialog : public MOBase::TutorableDialog
{
    Q_OBJECT

public:

  /**
   * @brief constructor
   *
   * @param executablesList current list of executables
   * @param parent parent widget
   **/
  explicit EditExecutablesDialog(const ExecutablesList &executablesList,
                                 const ModList &modList,
                                 Profile *profile,
                                 const MOBase::IPluginGame *game,
                                 QWidget *parent = 0);

  ~EditExecutablesDialog();

  /**
   * @brief retrieve the updated list of executables
   *
   * @return updated list of executables
   **/
  ExecutablesList getExecutablesList() const;

  void saveExecutable();

private slots:
  void on_newFilesModCheckBox_toggled(bool checked);

private slots:

  void on_binaryEdit_textChanged(const QString &arg1);

  void on_workingDirEdit_textChanged(const QString &arg1);

  void on_addButton_clicked();

  void on_browseBinaryButton_clicked();

  void on_removeButton_clicked();

  void on_titleEdit_textChanged(const QString &arg1);

  void on_overwriteAppIDBox_toggled(bool checked);

  void on_browseWorkingDirButton_clicked();

  void on_buttonBox_accepted();
  void on_buttonBox_rejected();

  void delayedRefresh();

  void on_executablesListBox_itemSelectionChanged();

  void on_executablesListBox_clicked(const QModelIndex &index);

  void on_forceLoadButton_clicked();

  void on_forceLoadCheckBox_toggled();

private:

  void resetInput();

  void refreshExecutablesWidget();

  bool executableChanged();

  void updateButtonStates();

private:
  std::unique_ptr<Ui::EditExecutablesDialog> ui;

  QListWidgetItem *m_CurrentItem;

  ExecutablesList m_ExecutablesList;

  Profile *m_Profile;

  QList<MOBase::ExecutableForcedLoadSetting> m_ForcedLibraries;

  const MOBase::IPluginGame *m_GamePlugin;


  void updateUI(const Executable* e);
  void clearEdits();
  void setEdits(const Executable& e);
};

#endif // EDITEXECUTABLESDIALOG_H