private void Pl_toggle_onChange(uiToggle c, bool was_clicked) { if (!was_clicked) { return; //if the control didnt change due to being clicked then it changed because WE manually set the state. which we don't want to react to or we will enter a loop. } if (c.isChecked) { GetPlugin().Enable(); } else { GetPlugin().Disable(); } }
public PluginManager() { onLayout += PluginManager_onLayout; Title = "Plugin Manager"; Set_Size(650, 400); Center(); onShown += PluginManager_onShown; onHidden += PluginManager_onHidden; list = Create <uiListView>(this); list.Set_Width(200f); list.Set_Margin(2, 0, 2, 2); top_wrapper = Create <uiWrapperPanel>(this); top_wrapper.Autosize_Method = AutosizeMethod.BLOCK; top_wrapper.Set_Margin(0, 0, 0, 2); top_wrapper.Set_Padding(2); top_wrapper.onLayout += Top_wrapper_onLayout; btn_store = Create <uiIconButton>(top_wrapper); btn_store.Text = "Plugin Store"; btn_store.Icon = TextureHelper.icon_arrow_left; btn_store.Border.type = uiBorderType.NONE; btn_store.Border.normal.color = Color.white; btn_store.Border.normal.size = new RectOffset(1, 1, 1, 1); btn_store.onClicked += (uiControl c) => { uiWindow.Switch(PluginStore.Instance); }; btn_donate = Create <uiIcon>(top_wrapper); btn_donate.Text = null; btn_donate.Image = (Texture2D)TextureHelper.Load_From_Resource("donate_btn.png", "SR_PluginLoader", (TextureOpFlags.NO_MIPMAPPING & TextureOpFlags.NO_WRAPPING)); btn_donate.Image_MouseOver = Util.Tint_Texture((Texture2D)TextureHelper.Load_From_Resource("donate_btn.png", "SR_PluginLoader", (TextureOpFlags.NO_MIPMAPPING & TextureOpFlags.NO_WRAPPING)), new Color(0.7f, 0.7f, 0.7f)); btn_donate.Border.type = uiBorderType.NONE; btn_donate.onClicked += (uiControl c) => { Process.Start("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DYGPA5XA4MWC2"); }; //CONTROL PANEL control_panel = Create <uiCollapser>("control_panel", this); control_panel.Autosize_Method = AutosizeMethod.BLOCK; control_panel.Set_Margin(2, 2, 2, 0); control_panel.Set_Padding(2); Util.Set_BG_Color(control_panel.local_style.normal, new Color(0f, 0f, 0f, 0.2f)); control_panel.onLayout += Control_panel_onLayout; control_panel.Collapse(); pl_toggle = Create <uiToggle>("pl_toggle", control_panel); pl_toggle.onChange += Pl_toggle_onChange; btn_copy_json = Create <uiButton>("copy_json", control_panel); btn_copy_json.Text = "Copy Json"; btn_copy_json.Set_Margin(3, 0); btn_copy_json.onClicked += Btn_copy_json_onClicked; // TABBED PANEL tabPanel = Create <uiTabPanel>(this); tabPanel.Autosize_Method = AutosizeMethod.FILL; tabPanel.disableBG = true; tabPanel.Set_Margin(2);// This margin gives us that light colored area surrounding the list and tabpanel pl_tab = tabPanel.Add_Tab(PLUGIN_TAB_NAME); tabPanel.CurrentTab.onLayout += tabPanel_onLayout; tabPanel.onChanged += TabPanel_onChanged; pl_tab.Set_Padding(3);// so we can distinguish where the plugin thumbnail's borders are // PLUGIN ERRORS PANEL pl_errors = Create <uiCollapser>(pl_tab); pl_errors.onLayout += Clps_errors_onLayout; pl_errors.Collapse(); var err_ico = Create <uiIcon>("err_ico", pl_errors); err_ico.Image = TextureHelper.icon_alert; err_ico.Set_Height(26); var err_lbl = Create <uiText>("err_lbl", pl_errors); err_lbl.TextColor = Color.red; err_lbl.Text = "Plugin experienced errors while loading!"; err_lbl.TextAlign = TextAnchor.MiddleLeft; err_lbl.Set_Margin(2, 0, 0, 0); // PLUGIN INFO pl_title = Create <uiText>("pl_title", pl_tab); pl_title.local_style.fontSize = 22; pl_title.local_style.fontStyle = FontStyle.Bold; pl_auth = Create <uiText>("pl_author", pl_tab); pl_vers = Create <uiText>("pl_vers", pl_tab); pl_desc = Create <uiTextArea>("pl_desc", pl_tab); pl_thumb = Create <uiIcon>("pl_thumb", pl_tab); pl_thumb.Border.normal.color = new Color(0f, 0f, 0f, 0.3f); pl_desc.Set_Margin(2); pl_desc.Set_Background(new Color(0.1f, 0.1f, 0.1f, 0.4f)); pl_desc.Set_Padding(2); pl_desc.Border.normal.color = new Color(0f, 0f, 0f, 0.3f); pl_desc.Autosize_Method = AutosizeMethod.BLOCK; // INSTRUCTIONS TAB tab_ins = tabPanel.Add_Tab(INSTRUCTION_TAB_NAME); tabPanel.CurrentTab.onLayout += InstructionsTab_onLayout; ins_title = Create <uiTextArea>(tabPanel); ins_title.Text = "Settings"; ins_title.TextSize = 20; ins_title.TextStyle = FontStyle.Bold; ins_text = Create <uiTextArea>(tabPanel); ins_text.Text = "Select a plugin from the list on the left to manage it's settings.\nOr, to browse more plugins for download, click the \"Plugin Store\" button at the top left of this window!"; ins_text.TextStyle = FontStyle.Italic; ins_text.Autosize = true; tab_need_plugins = tabPanel.Add_Tab(NEED_PLUGINS_TAB_NAME); tabPanel.CurrentTab.onLayout += NeedPluginsTab_onLayout; nop_wrapper = Create <uiWrapperPanel>(tabPanel); nop_wrapper.onLayout += Nop_Wrapper_onLayout; ins_no_plugins_text = Create <uiTextArea>(nop_wrapper); ins_no_plugins_text.Text = "You do not have any plugins installed!\nVisit the plugin store to find and install new plugins."; ins_no_plugins_text.TextSize = 16; ins_no_plugins_text.TextColor = new Color(1f, 0.1f, 0.1f, 0.9f); ins_no_plugins_text.TextStyle = FontStyle.Bold; ins_no_plugins_text.TextAlign = TextAnchor.UpperCenter; ins_no_plugins_text.Autosize = true; }