Exemple #1
0
        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();
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }