Beispiel #1
0
 public MainConfig(ILogging logging, IHSApplication hs, IIniSettings iniSettings, IAppCallbackAPI callback, IMainPlugin mainPlugin)
 {
     _hs          = hs;
     _logging     = logging;
     _iniSettings = iniSettings;
     _callback    = callback;
     _mainPlugin  = mainPlugin;
 }
Beispiel #2
0
 public ConfigGeneral(string pageName, IHSApplication hs, IIniSettings iniSettings,
                      ILogging log, IMainPlugin mainPlugin) : base(pageName)
 {
     _pageName     = pageName;
     _pageNameText = pageName.Replace("_", " ");
     _hs           = hs;
     _iniSettings  = iniSettings;
     _logging      = log;
     _mainPlugin   = mainPlugin;
 }
Beispiel #3
0
        private void AddPluginMenu(ref int seq, ref int index, string pluginName)
        {
            PluginData pd = PluginUtils.Plugins[pluginName];

            if (pd.PluginType != PluginTypes.Main)
            {
                return;
            }
            IMainPlugin plugin = pd.PluginBase as IMainPlugin;

            if (plugin == null)
            {
                return;
            }
            MainPluginInfo pi = plugin.PluginInfo;

            string dynName = GetDynPluginName(pi.Title);

            if (cmAssembly.Items.ContainsKey(dynName))
            {
                return;
            }
            if (cmMore.DropDownItems.ContainsKey(dynName))
            {
                return;
            }

            ToolStripMenuItem mi = new ToolStripMenuItem();

            mi.Name   = dynName;
            mi.Text   = pi.Title;
            mi.Tag    = plugin;
            mi.Click += new EventHandler(pluginMenu_Click);
            Bitmap bmp = pd.Icon;

            if (bmp != null)
            {
                //mi.ImageTransparentColor = Color.Fuchsia;
                mi.ImageScaling = ToolStripItemImageScaling.SizeToFit;
                mi.Image        = bmp;
            }

            if (seq >= Config.RecentPluginList)
            {
                cmMore.DropDownItems.Add(mi);
            }
            else
            {
                cmAssembly.Items.Insert(index, mi);
                seq++;
                index++;
            }
        }
Beispiel #4
0
        public override string InitIO(string port)
        {
            // debug
            HS.WriteLog(Utility.PluginName, "Entering InitIO");

            // initialise everything here, return a blank string only if successful, or an error message
            // initialise everything here, return a blank string only if successful, or an error message
            _iniSettings = new IniSettings(HS);
            _iniSettings.LoadSettingsFromIniFile();
            _logging    = new Logging(_iniSettings, HS);
            _mainPlugin = new MainPlugin(HS, _logging, _iniSettings, Callback, new HsCollectionFactory());
            _mainPlugin.InitIO(port);
            // debug

            HS.WriteLog(Name, "Completed InitIO");
            return("");
        }
        private void cmAssembly_Opening(object sender, CancelEventArgs e)
        {
            ContextMenuStrip cms = sender as ContextMenuStrip;

            //nothing selected
            if (dgvData.SelectedRows.Count < 1)
            {
                for (int i = 0; i < cms.Items.Count; i++)
                {
                    cms.Items[i].Enabled = false;
                }
                return;
            }

            //common menus
            cms.Items["cmCopyInfo"].Enabled   = true;
            cms.Items["cmOpenFolder"].Enabled = true;
            cms.Items["cmDeleteFile"].Enabled = true;

            //checking selected rows
            bool oneSelected   = dgvData.SelectedRows.Count == 1;
            bool isAllExe      = true;
            bool isAllAssembly = true;
            bool hasNetModule  = false;

            for (int i = 0; i < dgvData.SelectedRows.Count; i++)
            {
                string fileName = PathUtils.GetFileName(dgvData.SelectedRows[i]);
                isAllExe      = isAllExe && PathUtils.IsExe(fileName);
                isAllAssembly = isAllAssembly && PathUtils.IsAssembly(fileName);
                hasNetModule  = hasNetModule || PathUtils.IsNetModule(fileName);
            }
            bool isAllIL = !isAllAssembly;

            //standard menus
            if (isAllAssembly)
            {
                cms.Items["cmDasm"].Enabled = true;
                if (hasNetModule)
                {
                    cms.Items["cmDeobf"].Enabled      = false;
                    cms.Items["cmVerify"].Enabled     = false;
                    cms.Items["cmStrongName"].Enabled = false;
                }
                else
                {
                    cms.Items["cmDeobf"].Enabled      = true;
                    cms.Items["cmVerify"].Enabled     = true;
                    cms.Items["cmStrongName"].Enabled = true;
                }
                cms.Items["cmClassEditor"].Enabled = true;  //disable this just because Reflector cannot load *same* assembly files
                if (oneSelected && !hasNetModule)
                {
                    cms.Items["cmRunMethod"].Enabled = true;
                }
                else
                {
                    cms.Items["cmRunMethod"].Enabled = false;
                }
            }
            else
            {
                cms.Items["cmDasm"].Enabled        = false;
                cms.Items["cmDeobf"].Enabled       = false;
                cms.Items["cmVerify"].Enabled      = false;
                cms.Items["cmStrongName"].Enabled  = false;
                cms.Items["cmClassEditor"].Enabled = false;
                cms.Items["cmRunMethod"].Enabled   = false;
            }

            if (isAllIL)
            {
                cms.Items["cmAsm"].Enabled = true;
            }
            else
            {
                cms.Items["cmAsm"].Enabled = false;
            }

            if (isAllExe && oneSelected)
            {
                cms.Items["cmProfiler"].Enabled = true;
            }
            else
            {
                cms.Items["cmProfiler"].Enabled = false;
            }

            foreach (ToolStripItem item in cms.Items)
            {
                ToolStripMenuItem mi = item as ToolStripMenuItem;
                if (mi == null || mi.Tag == null)
                {
                    continue;
                }
                IMainPlugin plugin = mi.Tag as IMainPlugin;
                if (plugin == null)
                {
                    continue;
                }

                MainPluginInfo pi = plugin.PluginInfo;
                if (pi.RowType == RowTypes.One && !oneSelected)
                {
                    mi.Enabled = false;
                }
                else
                {
                    if (pi.SourceType == SourceTypes.Any)
                    {
                        mi.Enabled = true;
                    }
                    else if (pi.SourceType == SourceTypes.Assembly && isAllAssembly)
                    {
                        mi.Enabled = true;
                    }
                    else if (pi.SourceType == SourceTypes.Executable && isAllExe)
                    {
                        mi.Enabled = true;
                    }
                    else if (pi.SourceType == SourceTypes.ILFile && isAllIL)
                    {
                        mi.Enabled = true;
                    }
                    else
                    {
                        mi.Enabled = false;
                    }
                }
            }

            e.Cancel = false;
        }
Beispiel #6
0
        void pluginMenu_Click(object sender, EventArgs e)
        {
            ToolStripMenuItem mi     = (ToolStripMenuItem)sender;
            IMainPlugin       plugin = mi.Tag as IMainPlugin;

            if (plugin == null)
            {
                return;
            }

            //prepare parameters
            string sourceDir = _form.TreeView.SelectedNode.FullPath;

            string[] rows = PathUtils.GetFullFileNames(_form.AssemblyDataGrid.SelectedRows, sourceDir);

            //run plugin
            bool resolveDirAdded = false;

            try
            {
                resolveDirAdded = _form.AddAssemblyResolveDir(PluginUtils.PluginDir);
                Config.AddRecentPlugin(plugin.PluginInfo.Title);
                PluginArgument pa = new PluginArgument(_form, rows, sourceDir);
                PluginReturns  pr = plugin.Run(pa);
                if (pr == PluginReturns.Refresh)
                {
                    _form.TreeViewHandler.RefreshNode(_form.TreeView.SelectedNode, true);
                }
            }
            catch (Exception ex)
            {
                SimpleMessage.ShowException(ex);
            }
            finally
            {
                if (resolveDirAdded)
                {
                    _form.RemoveAssemblyResolveDir(PluginUtils.PluginDir);
                }
            }

            //dynamic adjust menu position
            int startIndex = GetPluginMenuStartIndex();

            if (cmAssembly.Items.ContainsKey(mi.Name))
            {
                int index = cmAssembly.Items.IndexOf(mi);
                if (startIndex != index)
                {
                    cmAssembly.Items.RemoveAt(index);
                    cmAssembly.Items.Insert(startIndex, mi);
                }
            }
            else
            {
                cmMore.DropDownItems.Remove(mi);
                ToolStripMenuItem miLast = (ToolStripMenuItem)cmAssembly.Items[GetPluginMenuEndIndex()];
                cmAssembly.Items.Remove(miLast);
                cmAssembly.Items.Insert(startIndex, mi);
                cmMore.DropDownItems.Insert(0, miLast);
            }
        }