private void loadModule(Expandable exa) { SuspendLayout(); if (exa.dllFileName == Core.CORE_ID) { exa.run(); return; } TabPage tpage = new TabPage(exa.getTitle()) { Padding = new Padding(3), TabIndex = tabControl.TabCount, UseVisualStyleBackColor = true, Tag = exa }; tpage.Controls.Add(exa.mainPanel); tabControl.Controls.Add(tpage); ToolStripMenuItem item = modulesToolStripMenuItem.DropDown.Items.Cast <ToolStripMenuItem>() .Where(_ => _.Tag.GetType().Equals(exa.GetType())).First(); loadMenuStripItems(exa); exa.run(); Core.runningModules.Add(exa); exa.mainPanel.Size = new Size(1, 1); exa.mainPanel.Dock = DockStyle.Fill; if (exa.hotkeys != null) { Core.enableHotkeys(exa.dllFileName, exa.hotkeys); } if (Core.globalHotkey.availableHotkeys == null || Core.globalHotkey.availableHotkeys == string.Empty) { Core.globalHotkey.availableHotkeys = exa.dllFileName; } Core.setModuleEnabled(exa.dllFileName, true); item.Checked = true; ResumeLayout(); }
private void InitPages() { foreach (string module in Core.ModuleHotkeys.Keys) { Expandable exa = Core.loadedModules.Where(_ => _.dllFileName == module).First(); Hotkey[] hks = Core.ModuleHotkeys[module]; if (hks == null || hks.Length == 0) { continue; } string text = module == Core.CORE_ID ? "General" : exa.getTitle(); Hotkey[] tmpHks = hks.ToArray(); TabPage page = new TabPage { Text = text, AutoScroll = true, Location = new Point(4, 22), Padding = new Padding(3), Size = new Size(290, 294), TabIndex = tabControl1.TabCount, UseVisualStyleBackColor = true, Name = module }; List <TextBox> textBoxes = new List <TextBox>(); for (int i = 0; i < tmpHks.Length; i++) { TextBox tb = new TextBox { Anchor = (AnchorStyles.Top | AnchorStyles.Right), Location = new Point(101, 6 + i * 28), Size = new Size(155, 22), //tb.TabIndex = i * 2; Tag = tmpHks[i] }; tb.KeyDown += HotkeyBox_KeyDown; textBoxes.Add(tb); if (tmpHks[i].keys != null) { tb.Text = getHotKeyString(tmpHks[i].keys.ToList()); } Button bt = new Button { Anchor = (AnchorStyles.Top | AnchorStyles.Right), Location = new Point(262, 6 + i * 28), Size = new Size(22, 22), //bt.TabIndex = i * 2 + 1; Text = "☓", UseVisualStyleBackColor = true, Tag = tb }; bt.Click += Delete_Click; Label lab = new Label { AutoSize = true, Location = new Point(8, 11 + i * 28), Size = new Size(33, 12) }; bool got = exa.strRes.TryGetValue("str_" + tmpHks[i].id, out string desc); lab.Text = got ? desc : tmpHks[i].name; page.Controls.Add(tb); page.Controls.Add(bt); page.Controls.Add(lab); } page.Tag = new object[] { exa, textBoxes }; tabControl1.Controls.Add(page); } }
private void loadModuleFiles() { if (!Directory.Exists(Core.modulePath)) { Directory.CreateDirectory(Core.modulePath); return; } string[] files = Directory.GetFiles(Core.modulePath); string[] modules = Directory.GetFiles(Core.modulePath).Where( s => s.StartsWith(Core.modulePath + "ewp") && s.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)).ToArray(); List <Expandable> loadedModules = new List <Expandable>(); foreach (string f in modules) { Assembly assembly = Assembly.LoadFrom(f); string[] needDlls = assembly.GetManifestResourceNames().Where(_ => _.EndsWith(".dll")).ToArray(); foreach (string name in needDlls) { Assembly tmp = loadAssembly(assembly, name); Program.loadedAssembly[tmp.FullName] = tmp; } Type t = assembly.GetTypes().Where(_ => _.Name.StartsWith("ewp")).First(); Expandable exa = (Expandable)Activator.CreateInstance(t, this); exa.dllFileName = f.Substring(Core.modulePath.Length, f.Length - Core.modulePath.Length - 4); //exa.dllFileName = f.Substring(Core.modulePath.Length); exa.dataPath = Core.moduleDataPath + exa.dllFileName + "/"; if (!Directory.Exists(exa.dataPath)) { Directory.CreateDirectory(exa.dataPath); } Core.loadedModules.Add(exa); ToolStripMenuItem toolStripMenuItem = new ToolStripMenuItem() { Text = exa.getTitle(), AutoSize = true, Tag = exa }; toolStripMenuItem.Click += ToolStripMenuItem_Click; modulesToolStripMenuItem.DropDown.Items.Add(toolStripMenuItem); loadedModules.Add(exa); } _Core.addSwitchPageHotkey(loadedModules.ToArray()); foreach (Expandable exa in Core.loadedModules) { if (!Core.loadConfig(exa.dllFileName, exa.config, exa.hotkeys)) { //無法讀取設定檔,則強制產生設定檔 exa.isConfigChanged = true; } } if (_Core.hotkeys != null) { Core.enableHotkeys(_Core.dllFileName, _Core.hotkeys); } ClientSize = new Size(Core.setting.windowWidth, Core.setting.windowHeight); }