public MainConfig(ILogging logging, IHSApplication hs, IIniSettings iniSettings, IAppCallbackAPI callback, IMainPlugin mainPlugin) { _hs = hs; _logging = logging; _iniSettings = iniSettings; _callback = callback; _mainPlugin = mainPlugin; }
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; }
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++; } }
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; }
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); } }