diff options
Diffstat (limited to 'CPP/7zip/FileManager/FilePlugins.h')
-rwxr-xr-x | CPP/7zip/FileManager/FilePlugins.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/CPP/7zip/FileManager/FilePlugins.h b/CPP/7zip/FileManager/FilePlugins.h new file mode 100755 index 00000000..805cac2a --- /dev/null +++ b/CPP/7zip/FileManager/FilePlugins.h @@ -0,0 +1,54 @@ +// FilePlugins.h + +#ifndef __FILEPLUGINS_H +#define __FILEPLUGINS_H + +#include "RegistryPlugins.h" +#include "RegistryAssociations.h" + +struct CPluginEnabledPair +{ + int Index; + bool Enabled; + CPluginEnabledPair(int index, bool enabled): Index(index),Enabled(enabled) {} +}; + +struct CExtInfoBig +{ + UString Ext; + bool Associated; + CRecordVector<CPluginEnabledPair> PluginsPairs; + int FindPlugin(int pluginIndex) + { + for (int i = 0; i < PluginsPairs.Size(); i++) + if (PluginsPairs[i].Index == pluginIndex) + return i; + return -1; + } +}; + +class CExtDatabase +{ +public: + CObjectVector<CExtInfoBig> ExtBigItems; + CObjectVector<CPluginInfo> Plugins; + int FindExtInfoBig(const UString &ext); + int FindPlugin(const UString &plugin); + + UString GetMainPluginNameForExtItem(int extIndex) const + { + const CExtInfoBig &extInfo = ExtBigItems[extIndex]; + if (extInfo.PluginsPairs.IsEmpty()) + return UString(); + else + return Plugins[extInfo.PluginsPairs.Front().Index].Name; + } + + void Read(); + void Save(); +}; + + +#endif + + |