Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/7zip/FileManager/FilePlugins.h')
-rwxr-xr-xCPP/7zip/FileManager/FilePlugins.h54
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
+
+