Example #1
0
        /// <summary>
        /// 加载一个默认的 插件, 如果存在的话! TODO
        /// </summary>
        private static void InitDefaultQTConfigPlugin()
        {
            ///////////// add default plugin by qwop 2012-07-10////////////////
            // the program data 's default plugin.
            string        defaultQtConfigPath = Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\QTQuick.dll";
            string        turnOffRepeatPath   = Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\TurnOffRepeat.dll";
            List <string> lists = new List <string>();

            if (File.Exists(defaultQtConfigPath))
            {
                // plugin.

                /* Config.BBar.ActivePluginIDs = new string[] { "QTConfig1.0.0.0(9CD80883)+Qwop.QTConfigPluginButton" };
                 * Config.BBar.ButtonIndexes = QTUtility.IsXP
                 *   ? new int[] { 1, 2, 0, 3, 4, 5, 0, 6, 7, 0, 11, 13, 12, 14, 15, 0, 65536, 9, 20 }
                 *   : new System.Int32[] { 3, 4, 5, 0, 6, 7, 0, 17, 11, 12, 14, 15, 13, 0, 65536, 9, 19, 10 };
                 */

                //  List<string> lists = new string[] { defaultQtConfigPath }.ToList();
                lists.Add(defaultQtConfigPath);
            }


            if (File.Exists(turnOffRepeatPath))
            {
                lists.Add(turnOffRepeatPath);
            }

            if (lists.Count > 0)
            {
                PluginManager.SavePluginAssemblyPaths(lists);
            }
        }
Example #2
0
        /// <summary>
        /// 加载一个默认的 插件, 如果存在的话! TODO
        /// </summary>
        private static void InitDefaultQTConfigPlugin()
        {
            ///////////// add default plugin by qwop 2012-07-10////////////////
            // the program data 's default plugin.
            string defaultQtConfigPath = Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\QTQuick.dll";
            string turnOffRepeatPath   = Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\TurnOffRepeat.dll";

            string[] plugins = new string[] {
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\QTQuick.dll",
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\TurnOffRepeat.dll",
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\CreateNewItem.dll",
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\FolderTreeButton.dll",
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\Memo.dll",
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\MigemoLoader.dll",
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\QTClock.dll",
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\QTFileTools.dll",
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\QTViewModeButton.dll",
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\QTWindowManager.dll",
                // Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\SampleSplitButton.dll",
                Environment.GetEnvironmentVariable("ProgramData") + @"\QTTabBar\ShowStatusBar.dll"
            };

            List <string> lists = new List <string>();

            foreach (string plugin in plugins)
            {
                if (File.Exists(plugin))
                {
                    lists.Add(plugin);
                }
            }

            /* Config.BBar.ActivePluginIDs = new string[] { "QTConfig1.0.0.0(9CD80883)+Qwop.QTConfigPluginButton" };
             * Config.BBar.ButtonIndexes = QTUtility.IsXP
             *      ? new int[] { 1, 2, 0, 3, 4, 5, 0, 6, 7, 0, 11, 13, 12, 14, 15, 0, 65536, 9, 20 }
             *      : new System.Int32[] { 3, 4, 5, 0, 6, 7, 0, 17, 11, 12, 14, 15, 13, 0, 65536, 9, 19, 10 };
             */

            /*
             * if (File.Exists(defaultQtConfigPath))
             * {
             *  // plugin.
             *
             *
             * //  List<string> lists = new string[] { defaultQtConfigPath }.ToList();
             *  lists.Add(defaultQtConfigPath);
             * }
             *
             *
             * if (File.Exists(turnOffRepeatPath))
             * {
             *  lists.Add(turnOffRepeatPath);
             * }
             */

            if (lists.Count > 0)
            {
                PluginManager.SavePluginAssemblyPaths(lists);
            }
        }
        public override void CommitConfig()
        {
            HashSet <string>         paths     = new HashSet <string>();
            HashSet <PluginAssembly> toDispose = new HashSet <PluginAssembly>();

            // Don't dispose the assemblies here.  That will be done by the plugin manager
            // when the plugins are unloaded.
            for (int i = 0; i < CurrentPlugins.Count; ++i)
            {
                if (CurrentPlugins[i].UninstallOnClose)
                {
                    CurrentPlugins[i].Enabled = false;
                    CurrentPlugins.RemoveAt(i--);
                }
            }

            List <string> enabled = new List <string>();

            foreach (PluginEntry entry in CurrentPlugins)
            {
                paths.Add(entry.PluginAssembly.Path);
                if (entry.DisableOnClose)
                {
                    entry.Enabled = false;
                }
                else if (entry.EnableOnClose)
                {
                    entry.Enabled = true;
                }
                else if (entry.InstallOnClose)
                {
                    entry.Enabled = true;
                    toDispose.Add(entry.PluginAssembly);
                    // Newly installed PluginAssemblies are loaded by the options dialog.
                    // They will also be loaded by the PluginManager, so we have to
                    // dispose of the ones we loaded here.
                }
                entry.EnableOnClose = entry.DisableOnClose = entry.InstallOnClose = false;

                if (entry.Enabled)
                {
                    enabled.Add(entry.PluginID);
                }
            }
            WorkingConfig.plugin.Enabled = enabled.ToArray();
            foreach (PluginAssembly asm in toDispose)
            {
                asm.Dispose();
            }
            PluginManager.SavePluginAssemblyPaths(paths.ToList());

            // Entries are invalid now, some assemblies may have been Disposed.
            CurrentPlugins = new ObservableCollection <PluginEntry>();
        }