/// <summary> /// Save the Presentation.Table settings to the settings file /// </summary> /// <param name="tableNode">XML-node for the Presentation.Table settings</param> public void Save(XmlNode tableNode) { string xpath; XmlNode node; xpath = "./tableTransformation"; SettingsHelper.SetSettingValue(xpath, tableNode, TableTransformation.ToString()); xpath = "./defaultLayout"; SettingsHelper.SetSettingValue(xpath, tableNode, DefaultLayout.ToString()); xpath = "./maxColumns"; SettingsHelper.SetSettingValue(xpath, tableNode, MaxColumns.ToString()); xpath = "./maxRows"; SettingsHelper.SetSettingValue(xpath, tableNode, MaxRows.ToString()); xpath = "./titleVisible"; SettingsHelper.SetSettingValue(xpath, tableNode, TitleVisible.ToString()); xpath = "./useStickyHeaderFullscreen"; SettingsHelper.SetSettingValue(xpath, tableNode, UseStickyHeaderFullscreen.ToString()); xpath = "./attributes"; node = SettingsHelper.GetNode(tableNode, xpath); _attributeSettings.Save(node); }
/// <summary> /// Вернуть внешний вид для объекта в значение по умолчанию /// </summary> /// <param name="form">форма</param> /// <param name="name">имя объекта</param> /// <param name="pc">Объект, для которого необходимо вернуть состояние</param> /// <returns>Возвращается массив байтов</returns> public static void SaveDefaultLayout(this Form form, string name, Control pc) { using (var db = new ApplicationEntitie(0)) { if (form == null) { throw new ArgumentException("Форма не задана"); } var tableName = form.Name + "." + name; var layout = pc.GetLayoutData(); var defLayout = db.DefaultLayouts.FirstOrDefault(dl => dl.TableName == tableName); if (defLayout == null) { defLayout = new DefaultLayout { TableName = tableName, Layout = layout }; db.DefaultLayouts.Add(defLayout); } else if (!db.DefaultLayouts.Any(dl => dl.cs_Layout == SqlFunctions.Checksum(layout))) { defLayout.Layout = layout; } db.SaveChanges(); } }
public virtual ListLayoutDescription ToListLayoutDescription() { var list = new ListLayoutDescription(); base.Fill(list); if (ItemsSource != null) { var itemsSource = ItemsSource.GetPropertyText(); list.Properties["ItemsSource"] = string.Format("@MvxBind:{0}", itemsSource); } if (SelectedCommand != null) { var selectedCommand = SelectedCommand.GetPropertyText(); list.Properties["ItemClick"] = string.Format("@MvxBind:{0}", selectedCommand); } if (DefaultLayout != null) { list.DefaultLayout = DefaultLayout.ToListItemDescription(); } foreach (var kvp in ItemLayouts) { list.ItemLayouts[kvp.Key] = kvp.Value.ToListItemDescription(); } return(list); }
public void ResetAllWindowPositions(Gauges gauges) { GaugeLayout layout = new DefaultLayout(gauges, this); foreach (GaugeSet set in GaugeSetPool.instance) { LayoutGaugeSet(set, layout); } }
private void ReadGaugeSets(BinaryReader reader) { // used for decluttering (i.e. show gauges hidden by other gauges) DefaultLayout layout = new DefaultLayout(NanoGauges.gauges, this); int cnt = reader.ReadInt16(); for (int i = 0; i < cnt; i++) { GaugeSet.ID id = (GaugeSet.ID)reader.ReadInt16(); Log.Detail("loading gaugeset " + id); GaugeSet set = GaugeSetPool.instance.GetGaugeSet(id); ReadGaugeSet(reader, set); if (declutterEnabled) { layout.Declutter(set); } } }
/// <summary> /// Loads the layout of a particular docking manager instance from persistence /// and checks whether a file should really be reloaded (some files may no longer /// be available). /// </summary> /// <param name="docManager"></param> private void LoadDockingManagerLayout(DockingManager docManager) { OnLayoutLoading(EventArgs.Empty); var fromFile = System.IO.File.Exists(LayoutFileName); var layoutSerializer = new XmlLayoutSerializer(docManager); layoutSerializer.LayoutSerializationCallback += (s, args) => { //logger.DebugFormat("deserialize {0}, content: {1}", args.Model.ContentId, args.Content); // This can happen if the previous session was loading a file // but was unable to initialize the view ... if (args.Model.ContentId == null) { args.Cancel = true; return; } if (reloadContent != null) { reloadContent(args); } }; if (fromFile) { layoutSerializer.Deserialize(LayoutFileName); } else { using (var s = DefaultLayout.ToMemoryStream()) { layoutSerializer.Deserialize(s); } } OnLayoutLoaded(EventArgs.Empty); }
/// <summary> /// Releases unmanaged and - optionally - managed resources /// </summary> /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> private void Dispose(bool disposing) { if (_disposed) { return; } if (disposing) { // Dump any pending rendering. _cache.Reset(); if (_initialState != null) { _initialState.Restore(true); _initialState = null; } TrackedObjects.ReleaseAll(); if (Effects != null) { Effects.FreeEffects(); Effects = null; } if (_currentTarget.SwapChain != null) { _currentTarget.SwapChain.AfterSwapChainResized -= target_Resized; } if (DefaultLayout != null) { DefaultLayout.Dispose(); } if (VertexShader != null) { VertexShader.CleanUp(); } if (PixelShader != null) { PixelShader.CleanUp(); } VertexShader = null; PixelShader = null; DefaultVertexBufferBinding.VertexBuffer.Dispose(); if (DefaultIndexBuffer != null) { DefaultIndexBuffer.Dispose(); } if ((_systemCreatedTarget) && (_defaultTarget.Target != null)) { _defaultTarget.Target.Resource.Dispose(); _defaultTarget = default(Gorgon2DTarget); } Graphics.RemoveTrackedObject(this); } _disposed = true; }
protected override void OnWindow(int id) { Configuration config = NanoGauges.configuration; GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Close", HighLogic.Skin.button)) { SetVisible(false); } GUILayout.EndHorizontal(); GUILayout.Label("Log Level:", STYLE_LABEL); GUILayout.BeginHorizontal(); Log.LEVEL level = Log.GetLevel(); LogLevelButton(Log.LEVEL.OFF, "OFF"); LogLevelButton(Log.LEVEL.ERROR, "ERROR"); LogLevelButton(Log.LEVEL.WARNING, "WARNING"); LogLevelButton(Log.LEVEL.INFO, "INFO"); LogLevelButton(Log.LEVEL.DETAIL, "DETAIL"); LogLevelButton(Log.LEVEL.TRACE, "TRACE"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); // Reset Window Postions if (GUILayout.Button("Standard Gauge Positions", HighLogic.Skin.button)) { gauges.LayoutCurrentGaugeSet(new DefaultLayout(gauges, config)); } if (GUILayout.Button("Reset Gauge Cluster", HighLogic.Skin.button)) { gauges.LayoutCurrentGaugeSet(new ClusterLayout(gauges, config)); } // layout gauges // autolayout will only work with a 100% scale GUI.enabled = (NanoGauges.configuration.verticalGaugeHeight == Configuration.UNSCALED_VERTICAL_GAUGE_HEIGHT && NanoGauges.configuration.gaugeScaling == Configuration.GAUGE_SCALE_100); if (GUILayout.Button("Automatic Layout", HighLogic.Skin.button)) { gauges.AutoLayout(); config.Save(); } GUI.enabled = true; GUILayout.EndHorizontal(); // save gauge postions if (GUILayout.Button("Save Gauge Positions", HighLogic.Skin.button)) { gauges.SaveWindowPositions(); config.Save(); } // selector gauge if (GUILayout.Button("Selector Gauge Location From Current Profile", HighLogic.Skin.button)) { gauges.CopySelectorPositionFrom(config.GetGaugeSetId()); } // gauge sizes GUILayout.BeginHorizontal(); GUILayout.Label("Size of gauges:", STYLE_LABEL); GaugeScaleToggle("100%", Configuration.GAUGE_SCALE_100); GaugeScaleToggle("110%", Configuration.GAUGE_SCALE_110); GaugeScaleToggle("120%", Configuration.GAUGE_SCALE_120); GaugeScaleToggle("150%", Configuration.GAUGE_SCALE_150); GaugeScaleToggle("200%", Configuration.GAUGE_SCALE_200); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Settings:", STYLE_LABEL); GUILayout.FlexibleSpace(); config.performanceStatisticsEnabled = GUILayout.Toggle(config.performanceStatisticsEnabled, "performance statistics", STYLE_TOGGLE_2_PER_ROW); GUILayout.EndHorizontal(); GUILayout.BeginVertical(); // // Positions Locked & Snapin GUILayout.BeginHorizontal(); config.gaugePositionsLocked = GUILayout.Toggle(config.gaugePositionsLocked, "Gauge positions locked", STYLE_TOGGLE_2_PER_ROW); // Snapin config.snapinEnabled = GUILayout.Toggle(config.snapinEnabled, "Snapin enabled", HighLogic.Skin.toggle); // Profiles GUILayout.FlexibleSpace(); if (GUILayout.Button("Profiles", STYLE_SIDE_BUTTON)) { int px = (int)bounds.x + (int)bounds.width; int py = (int)bounds.y + 270; if (px + ProfilesWindow.WIDTH > Screen.width) { px = (int)bounds.x - ProfilesWindow.WIDTH; } profilesWindow.SetPosition(px, py); profilesWindow.SetVisible(!profilesWindow.IsVisible()); } GUILayout.EndHorizontal(); // GUILayout.BeginHorizontal(); // Gauge marker config.gaugeMarkerEnabled = GUILayout.Toggle(config.gaugeMarkerEnabled, "Gauge marker enabled", STYLE_TOGGLE_2_PER_ROW); config.declutterEnabled = GUILayout.Toggle(config.declutterEnabled, "Declutter enabled", STYLE_TOGGLE_2_PER_ROW); GUILayout.FlexibleSpace(); if (GUILayout.Button("Hotkeys", STYLE_SIDE_BUTTON)) { int px = (int)bounds.x + (int)bounds.width; int py = (int)bounds.y + 300; if (px + HotkeysWindow.WIDTH > Screen.width) { px = (int)bounds.x - HotkeysWindow.WIDTH; } hotkeysWindow.SetPosition(px, py); hotkeysWindow.SetVisible(!hotkeysWindow.IsVisible()); } GUILayout.EndHorizontal(); // // tooltips & exact readout GUILayout.BeginHorizontal(); if (config.exactReadoutEnabled) { config.tooltipsEnabled = false; } config.tooltipsEnabled = GUILayout.Toggle(config.tooltipsEnabled, "Tooltips enabled", STYLE_TOGGLE_2_PER_ROW); if (config.tooltipsEnabled) { config.exactReadoutEnabled = false; } //config.exactReadoutEnabled = GUILayout.Toggle(config.exactReadoutEnabled, "Exact readout enabled", STYLE_TOGGLE_2_PER_ROW); // GUILayout.FlexibleSpace(); if (GUILayout.Button("Export", STYLE_SIDE_BUTTON)) { int px = (int)bounds.x + (int)bounds.width; int py = (int)bounds.y + 332; if (px + ExportWindow.WIDTH > Screen.width) { px = (int)bounds.x - ExportWindow.WIDTH; } exportWindow.SetPosition(px, py); exportWindow.SetVisible(!exportWindow.IsVisible()); } GUILayout.EndHorizontal(); // // // Stock Toolbar if (ToolbarManager.ToolbarAvailable) { config.useStockToolbar = GUILayout.Toggle(config.useStockToolbar, "Use Stock Toolbar (needs a restart to take effekt)", HighLogic.Skin.toggle); } // Cam DrawCameraModeToggles(); GUILayout.EndVertical(); // // ------------- // GAUGES ON/OFF GUILayout.BeginHorizontal(); GUILayout.Label("Gauges:", STYLE_LABEL); GUILayout.FlexibleSpace(); DrawCopyPasteButtons(); DrawEnableDisableAllButton(); if (GUILayout.Button("Default", STYLE_DEFAULT_BUTTON)) { GaugeLayout layout = new DefaultLayout(gauges, config); layout.EnableGauges(GaugeSetPool.instance.GetGaugeSet(config.GetGaugeSetId())); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GaugeSetButton(GaugeSet.ID.STANDARD, "STANDARD"); GaugeSetButton(GaugeSet.ID.LAUNCH, "LAUNCH"); GaugeSetButton(GaugeSet.ID.LAND, "LAND"); GaugeSetButton(GaugeSet.ID.DOCK, "DOCK"); GaugeSetButton(GaugeSet.ID.ORBIT, "ORBIT"); GaugeSetButton(GaugeSet.ID.FLIGHT, "FLIGHT"); GaugeSetButton(GaugeSet.ID.SET1, "SET 1"); GaugeSetButton(GaugeSet.ID.SET2, "SET 2"); GaugeSetButton(GaugeSet.ID.SET3, "SET 3"); GUILayout.EndHorizontal(); scrollPosGauges = GUILayout.BeginScrollView(scrollPosGauges, false, true, HighLogic.Skin.horizontalScrollbar, HighLogic.Skin.verticalScrollbar, STYLE_SCROLLVIEW, GUILayout.Height(GAUGES_HEIGHT)); this.allGaugesEnables = true; //config.trimIndicatorsEnabled = GUILayout.Toggle(config.trimIndicatorsEnabled, "Trim indicators enabled (restart required)", HighLogic.Skin.toggle); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_SETS, "Gaugeset selector gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_INDICATOR, "Indicator gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_CAM, "Camera indicator gauge enabled"); GUILayout.Label("", STYLE_LINE); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_ALTIMETER, "Altimeter gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_SHIELD, "Ablative shielding gauge enabled (Deadly Reentry plugin required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_ABLAT, "Ablator gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_AIRIN, "Absolute air-intake gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_ACCL, "Acceleration gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_G, "Accelerometer gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_AOA, "AoA (angle of attack) gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_AMP, "Amperemeter gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_APA, "Apoapsis gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_ATM, "Atmosphere gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_ATMTEMP, "Atmosphere temperature gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_BAROMETER, "Barometric gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_CARBONDIOXIDE, "Carbon dioxide gauge enabled (TAC life suppord required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_CO2, "CO2 gauge enabled (Kerbalism required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_CRAP, "Crap gauge enabled (Kerbalism required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_DTGT, "Distance to target gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_DRILLTEMP, "Drill temperature gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_DSKY, "DSKY gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_Q, "Dynamic pressure (Q) gauge enabled (FAR plugin required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_CHARGE, "Electric charge gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_EVAMP, "EVA monopropellant gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_EXTTEMP, "External temperature gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_FOOD, "Food gauge enabled (TAC life suppord or Kerbalism required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_FLOW, "Fuel flow gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_FUEL, "Fuel gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_GRAVIMETER, "Gravity gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_HEAT, "Heat shield temperatur gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_HACCL, "Horizontal acceleration gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_HSPD, "Horizontal speed gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_GLIDE, "ILS/DME gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_IMPACT, "Impact gauge"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_IAS, "Indicated airspeed gauge"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_DISP, "ISP rate gauge (Delta Isp/s) enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_ISPE, "ISP/E gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_KARBONITE, "Karbonite gauge enabled (Real Fuels plugin required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_KAIRIN, "Kethane air intake gauge enabled (Kethane plugin required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_KETHANE, "Kethane gauge enabled (Kethane plugin required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_MACH, "Mach gauge enabled (FAR plugin required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_MAXG, "Max g gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_MONO, "Monopropellant gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_INCL, "Orbit inclination gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_ORBIT, "Orbit gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_OSPD, "Orbital speed gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_ORE, "Ore gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_OXID, "Oxidizer gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_O2, "Oxygen gauge enabled (TAC life suppord or Kerbalism required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_PEA, "Periapsis gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_RADAR_ALTIMETER, "Radar altimeter gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_AIRPCT, "Relative air-intake gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_PROPELLANT, "Relative propellant requirement gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_SEISMOMETER, "Seismometer gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_SRB, "Solid fuel gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_SPD, "Speed gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_TEMP, "Temperature gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_VT, "Terminal velocity deviation gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_TIMETOAPA, "Time to apoapsis gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_TIMETOTRANS, "Time to next transition gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_TIMETOPEA, "Time to periapsis gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_THROTTLE, "Throttle gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_THRUST, "Thrust gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_TWR, "TWR gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_VAI, "VAI (vertical attidute indicator) gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_VTGT, "Velocity to target gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_VACCL, "Vertical acceleration gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_MASS, "Vessel mass gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_VSI, "VSI (vertical speed indicator) gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_VVI, "VVI (vertical velocity indicator) gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_WASTE, "Waste gauge enabled (TAC life suppord required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_WH2O, "Wastewater gauge enabled (TAC life suppord required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_H2O, "Water gauge enabled (TAC life suppord required)"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_XENON, "Xenon gauge enabled"); GUILayout.Label("", STYLE_LINE); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_APOAPSIS, "Apoapsis gauge (horizontal) enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_BIOME, "Biome gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_CAMERA, "Camera compass gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_LATITUDE, "Latitude gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_LONGITUDE, "Longitude gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_PERIAPSIS, "Periapsis gauge (horizontal) enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_NAV, "VOR/ILS gauge enabled"); GaugeEnabledToggle(Constants.WINDOW_ID_GAUGE_VESSEL, "Vessel gauge enabled"); GUILayout.EndScrollView(); GUILayout.EndVertical(); DragWindow(); }
private void generalView_Click(object sender, EventArgs e) { DefaultLayout form = new DefaultLayout(this.currentUser, this.parent); Search(form); }
// ************* Public ****************** public void Init() { _recievers = new List <InputRecieverLayer>(); _inputLayout = new DefaultLayout(); }