Sandboxie/SandboxiePlus/SandMan/Windows/OptionsWindow.h

260 lines
6.4 KiB
C
Raw Normal View History

2020-07-19 21:09:02 +01:00
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_OptionsWindow.h"
#include "SbiePlusAPI.h"
2021-01-18 12:04:14 +00:00
class COptionsWindow : public QDialog
2020-07-19 21:09:02 +01:00
{
Q_OBJECT
public:
COptionsWindow(const QSharedPointer<CSbieIni>& pBox, const QString& Name, QWidget *parent = Q_NULLPTR);
~COptionsWindow();
2021-01-18 12:04:14 +00:00
virtual void accept() {}
virtual void reject();
2020-07-19 21:09:02 +01:00
signals:
void OptionsChanged();
2021-01-18 12:04:14 +00:00
void Closed();
2020-07-19 21:09:02 +01:00
public slots:
2021-01-18 12:04:14 +00:00
void ok();
2020-07-19 21:09:02 +01:00
void apply();
private slots:
2020-11-28 16:20:56 +00:00
//void OnWithTemplates();
2020-11-16 16:15:03 +00:00
2020-07-19 21:09:02 +01:00
void OnPickColor();
2020-11-28 16:20:56 +00:00
void OnBrowsePath();
void OnAddCommand();
void OnDelCommand();
2021-01-06 12:19:13 +00:00
void OnAddAutoCmd();
void OnAddAutoExe();
void OnDelAutoSvc();
void OnDelAuto();
2020-07-19 21:09:02 +01:00
void OnAddGroup();
void OnAddProg();
void OnDelProg();
void OnForceProg();
void OnForceDir();
void OnDelForce();
void OnShowForceTmpl() { LoadForced(); }
void OnAddLingering();
void OnAddLeader();
void OnDelStopProg();
void OnShowStopTmpl() { LoadStop(); }
void OnRestrictStart();
void OnAddStartProg();
void OnDelStartProg();
void OnBlockINet();
void OnAddINetProg();
void OnDelINetProg();
void OnAccessItemClicked(QTreeWidgetItem* pItem, int Column);
void OnAccessItemDoubleClicked(QTreeWidgetItem* pItem, int Column);
2020-12-22 14:50:58 +00:00
void OnAccessSelectionChanged() { CloseAccessEdit(); }
2020-07-19 21:09:02 +01:00
void OnAddFile() { AddAccessEntry(eFile, eDirect, "", ""); }
2020-12-22 14:50:58 +00:00
void OnBrowseFile();
void OnBrowseFolder();
2020-07-19 21:09:02 +01:00
void OnAddKey() { AddAccessEntry(eKey, eDirect, "", ""); }
void OnAddIPC() { AddAccessEntry(eIPC, eDirect, "", ""); }
2020-12-29 08:54:59 +00:00
void OnAddWnd() { AddAccessEntry(eWnd, eDirect, "", ""); }
void OnAddCOM() { AddAccessEntry(eCOM, eDirect, "", ""); }
2020-07-19 21:09:02 +01:00
void OnDelAccess();
void OnShowAccessTmpl() { LoadAccessList(); }
2020-11-28 16:20:56 +00:00
void OnAddRecFolder();
void OnAddRecIgnore();
void OnAddRecIgnoreExt();
void OnDelRecEntry();
void OnShowRecoveryTmpl() { LoadRecoveryList(); }
2021-01-06 12:19:13 +00:00
void OnAddAutoExec();
void OnDelAutoExec();
2020-11-28 16:20:56 +00:00
void OnAddProcess();
void OnDelProcess();
void OnNoWindowRename();
2020-07-19 21:09:02 +01:00
void OnAddUser();
void OnDelUser();
void OnFilterTemplates() { ShowTemplates(); }
void OnTemplateClicked(QTreeWidgetItem* pItem, int Column);
void OnTemplateDoubleClicked(QTreeWidgetItem* pItem, int Column);
void OnTab();
void OnGeneralChanged();
void OnStartChanged() { m_StartChanged = true; }
2020-11-28 16:20:56 +00:00
//void OnRestrictionChanged() { m_RestrictionChanged = true; }
2020-12-07 16:34:20 +00:00
void OnINetBlockChanged() { m_INetBlockChanged = true; }
2020-11-28 16:20:56 +00:00
void OnRecoveryChanged() { m_RecoveryChanged = true; }
2020-07-19 21:09:02 +01:00
void OnAdvancedChanged();
2020-11-28 16:20:56 +00:00
void OnDebugChanged();
2020-07-19 21:09:02 +01:00
void SetIniEdit(bool bEnable);
void OnEditIni();
void OnSaveIni();
void OnCancelEdit();
protected:
void closeEvent(QCloseEvent *e);
2020-11-28 16:20:56 +00:00
bool eventFilter(QObject *watched, QEvent *e);
2020-07-19 21:09:02 +01:00
enum EAccessEntry
{
eOpenFilePath,
eOpenPipePath,
eClosedFilePath,
eReadFilePath,
eWriteFilePath,
eOpenKeyPath,
eClosedKeyPath,
eReadKeyPath,
eWriteKeyPath,
eOpenIpcPath,
eClosedIpcPath,
eOpenWinClass,
2020-12-29 08:54:59 +00:00
eOpenCOM,
eClosedCOM,
eClosedCOM_RT,
2020-07-19 21:09:02 +01:00
eMaxAccessType
};
enum EAccessType
{
eFile,
eKey,
eIPC,
2020-12-29 08:54:59 +00:00
eWnd,
eCOM
2020-07-19 21:09:02 +01:00
};
enum EAccessMode
{
eDirect,
2020-11-28 16:20:56 +00:00
eDirectAll,
2020-07-19 21:09:02 +01:00
eClosed,
2020-12-29 08:54:59 +00:00
eClosedRT,
2020-07-19 21:09:02 +01:00
eReadOnly,
eWriteOnly
};
void SetProgramItem(QString Program, QTreeWidgetItem* pItem, int Column);
QString SelectProgram(bool bOrGroup = true);
void CopyGroupToList(const QString& Groupe, QTreeWidget* pTree);
QTreeWidgetItem* GetAccessEntry(EAccessType Type, const QString& Program, EAccessMode Mode, const QString& Path);
void SetAccessEntry(EAccessType Type, const QString& Program, EAccessMode Mode, const QString& Path);
void DelAccessEntry(EAccessType Type, const QString& Program, EAccessMode Mode, const QString& Path);
void AddProgToGroup(QTreeWidget* pTree, const QString& Groupe);
void AddProgToGroup(const QString& Value, const QString& Groupe);
void DelProgFromGroup(QTreeWidget* pTree, const QString& Groupe);
void LoadConfig();
void SaveConfig();
2021-01-06 12:19:13 +00:00
void AddAutoRunItem(const QString& Value, int Type);
2020-11-28 16:20:56 +00:00
void AddRunItem(const QString& Name, const QString& Command);
2020-07-19 21:09:02 +01:00
void LoadGroups();
void SaveGroups();
void LoadForced();
void AddForcedEntry(const QString& Name, int type, const QString& Template = QString());
void SaveForced();
void LoadStop();
void AddStopEntry(const QString& Name, int type, const QString& Template = QString());
void SaveStop();
QString AccessTypeToName(EAccessEntry Type);
void LoadAccessList();
QString GetAccessTypeStr(EAccessType Type);
QString GetAccessModeStr(EAccessMode Mode);
void ParseAndAddAccessEntry(EAccessEntry EntryType, const QString& Value, const QString& Template = QString());
void AddAccessEntry(EAccessType Type, EAccessMode Mode, QString Program, const QString& Path, const QString& Template = QString());
QString MakeAccessStr(EAccessType Type, EAccessMode Mode);
void SaveAccessList();
QList<EAccessMode> GetAccessModes(EAccessType Type);
void DeleteAccessEntry(QTreeWidgetItem* pItem);
2020-12-22 14:50:58 +00:00
void CloseAccessEdit(bool bSave = true);
void CloseAccessEdit(QTreeWidgetItem* pItem, bool bSave = true);
2020-11-28 16:20:56 +00:00
void LoadRecoveryList();
void AddRecoveryEntry(const QString& Name, int type, const QString& Template = QString());
void SaveRecoveryList();
2020-07-19 21:09:02 +01:00
void LoadTemplates();
void ShowTemplates();
void SaveTemplates();
void LoadIniSection();
void SaveIniSection();
bool m_ConfigDirty;
QColor m_BorderColor;
bool m_GeneralChanged;
bool m_GroupsChanged;
bool m_ForcedChanged;
bool m_StopChanged;
bool m_StartChanged;
2020-11-28 16:20:56 +00:00
//bool m_RestrictionChanged;
2020-07-19 21:09:02 +01:00
bool m_INetBlockChanged;
bool m_AccessChanged;
bool m_TemplatesChanged;
2020-11-28 16:20:56 +00:00
bool m_RecoveryChanged;
2020-07-19 21:09:02 +01:00
bool m_AdvancedChanged;
bool m_Template;
QSet<QString> m_TemplateGroups;
QMultiMap<QString, QPair<QString, QString>> m_AllTemplates;
QStringList m_GlobalTemplates;
QStringList m_BoxTemplates;
QList<QPair<QString, QString>> m_Settings;
QSharedPointer<CSbieIni> m_pBox;
2020-12-22 14:50:58 +00:00
QSet<QString> m_Programs;
2020-07-19 21:09:02 +01:00
private:
2020-11-28 16:20:56 +00:00
void ReadAdvancedCheck(const QString& Name, QCheckBox* pCheck, const QString& Value = "y");
void WriteAdvancedCheck(QCheckBox* pCheck, const QString& Name, const QString& Value = "y");
2020-12-22 14:50:58 +00:00
void WriteAdvancedCheck(QCheckBox* pCheck, const QString& Name, const QString& OnValue, const QString& OffValue);
2020-11-28 16:20:56 +00:00
2020-07-19 21:09:02 +01:00
Ui::OptionsWindow ui;
2020-11-28 16:20:56 +00:00
struct SDbgOpt {
QString Name;
QString Value;
bool Changed;
};
QMap<QCheckBox*, SDbgOpt> m_DebugOptions;
2020-07-19 21:09:02 +01:00
};