private void OnToolStripSettingsPropertyChanged(object sender, PropertyChangedEventArgs e) { ToolStripSettings settings = ToolStripSettings.Default; if (e.PropertyName == "WrapLongToolstrips" || e.PropertyName == "ToolStripDock") { // handle both wrapping and docking together because both affect flow direction bool verticalOrientation = ReferenceEquals(_toolbar.Parent, _toolStripContainer.LeftToolStripPanel) || ReferenceEquals(_toolbar.Parent, _toolStripContainer.RightToolStripPanel); _toolbar.SuspendLayout(); _toolbar.LayoutStyle = settings.WrapLongToolstrips ? ToolStripLayoutStyle.Flow : ToolStripLayoutStyle.StackWithOverflow; if (settings.WrapLongToolstrips) { ((FlowLayoutSettings)_toolbar.LayoutSettings).FlowDirection = verticalOrientation ? FlowDirection.TopDown : FlowDirection.LeftToRight; } _toolbar.ResumeLayout(true); ToolStripPanel targetParent = ConvertToToolStripPanel(_toolStripContainer, settings.ToolStripDock); if (targetParent != null && !ReferenceEquals(targetParent, _toolbar.Parent)) { _toolStripContainer.SuspendLayout(); targetParent.Join(_toolbar); _toolStripContainer.ResumeLayout(true); } } else if (e.PropertyName == "IconSize") { ToolStripBuilder.ChangeIconSize(_toolbar, settings.IconSize); } }
private static void AssertReadOnlyFileSave() { SetUpReadOnlySettingsFile(); // content is not relevant here var newSettings = new ToolStripSettings(); newSettings.Save(); Assert.Fail("Save of read only file has to fail"); }
public void PanelLocation_LoadFromSaved_ReadsSavedLocation() { SaveSampleSettings(); var loaded = ToolStripSettings.Load(); int loadedLeft = loaded[IRELEVANT_KEY].Left; Assert.AreEqual(IRELEVANT_LEFT, loadedLeft, "We need to be able read previously saved settings"); }
internal static void InternalLoadSettings(Control owner) { //owner内のToolStripPanelを探す List <Control> toolStripPanels = new List <Control>(); FindControls(typeof(ToolStripPanel), owner.Controls, ref toolStripPanels); foreach (ToolStripPanel tsp in toolStripPanels) { if (string.IsNullOrEmpty(tsp.Name)) { continue; } //ToolStripPanelの情報を読み込む string skey = owner.GetType().FullName + "." + tsp.Name; ToolStripSettings settings = new ToolStripSettings(skey); List <List <ToolStripInfo> > rowsList = settings.Rows; //ToolStripPanel内のToolStripを一時的にすべて削除する Dictionary <string, ToolStrip> toolstrips = new Dictionary <string, ToolStrip>(); foreach (Control c in tsp.Controls) { toolstrips.Add(c.Name, (ToolStrip)c); } tsp.Controls.Clear(); for (int i = 0; i < rowsList.Count; i++) { foreach (ToolStripInfo info in rowsList[i]) { //位置を設定するToolStripを探す ToolStrip ts = null; if (toolstrips.ContainsKey(info.Name)) { ts = toolstrips[info.Name]; } else { Control[] tss = owner.Controls.Find(info.Name, true); if ((tss != null) && (tss.Length == 1) && (tss[0] is ToolStrip)) { ts = (ToolStrip)tss[0]; } } //ToolStripの位置を変更する if (ts != null) { tsp.Join(ts, info.Location); } } } } }
private void SaveAllPanels() { var newSettings = new ToolStripSettings(); SaveToolStripPanel(this.TopToolStripPanel, "Top", newSettings); SaveToolStripPanel(this.LeftToolStripPanel, "Left", newSettings); SaveToolStripPanel(this.RightToolStripPanel, "Right", newSettings); SaveToolStripPanel(this.BottomToolStripPanel, "Bottom", newSettings); newSettings.Save(); }
private void AplyAllPanelPositions(ToolStripSettings newSettings) { foreach (ToolStripSetting setting in newSettings.Values) { ToolStrip strip = this.FindToolStripForSetting(setting); strip.GripStyle = ToolStripGripStyle.Visible; //ChangeToolStripLock(strip); ApplyLastPosition(setting, strip); } }
private static void SaveSampleSettings() { var newSettings = new ToolStripSettings(); newSettings.Add(IRELEVANT_KEY, new ToolStripSetting() { Left = IRELEVANT_LEFT }); newSettings.Save(); }
private void OnToolbarParentChanged(object sender, EventArgs e) { ToolStripDock dock = ConvertToToolStripDock(_toolStripContainer, _toolbar); if (dock != ToolStripDock.None) { ToolStripSettings settings = ToolStripSettings.Default; settings.ToolStripDock = dock; settings.Save(); } }
private static void SaveToolStripRow(ToolStripPanelRow row, ToolStripSettings newSettings, String position, int rowIndex) { foreach (ToolStrip strip in row.Controls) { ToolStripSetting setting = new ToolStripSetting(); setting.Dock = position; setting.Row = rowIndex; setting.Left = strip.Left; setting.Top = strip.Top; setting.Name = strip.Name; setting.Visible = strip.Visible; newSettings.Add(newSettings.Count, setting); } }
private void ReJoinAllPanels(ToolStripSettings newSettings) { foreach (ToolStripSetting setting in newSettings.Values) { ToolStrip strip = this.FindToolStripForSetting(setting); ToolStripMenuItem menuItem = this.FindMenuForSetting(setting); if (menuItem != null) { menuItem.Checked = setting.Visible; } this.RestoreStripLayout(setting, strip); } }
internal static void InternalSaveSettings(Control owner) { //owner内のToolStripPanelを探す List <Control> toolStripPanels = new List <Control>(); FindControls(typeof(ToolStripPanel), owner.Controls, ref toolStripPanels); foreach (ToolStripPanel tsp in toolStripPanels) { if (string.IsNullOrEmpty(tsp.Name)) { continue; } List <List <ToolStripInfo> > rowsList = new List <List <ToolStripInfo> >(); foreach (ToolStripPanelRow r in tsp.Rows) { //ToolStripPanelの列内のToolStripの情報を収集 List <ToolStripInfo> toolStripNames = new List <ToolStripInfo>(); foreach (Control con in r.Controls) { if (con is ToolStrip && !string.IsNullOrEmpty(con.Name)) { toolStripNames.Add( new ToolStripInfo((ToolStrip)con)); } } //列内の順番を並び替え toolStripNames.Sort(); rowsList.Add(toolStripNames); } //ToolStripPanelごとに保存する string skey = owner.GetType().FullName + "." + tsp.Name; ToolStripSettings settings = new ToolStripSettings(skey); settings.Rows = rowsList; settings.Save(); } }
internal void LoadToolStripsState() { ToolStripSettings newSettings = ToolStripSettings.Load(); if (newSettings != null && newSettings.Count > 0) { this.SuspendLayout(); this.ClearAllPanels(); ReJoinAllPanels(newSettings); // paranoic, because the previous join can reset the position // dont assign if already there. Because it can reorder the toolbars // http://www.visualbasicask.com/visual-basic-language/toolstrips-controls-becoming-desorganized.shtml AplyAllPanelPositions(newSettings); this.ResumeLayout(true); ChangeLockState(); } }
private static void SaveToolStripPanel(ToolStripPanel panel, String position, ToolStripSettings newSettings) { for (Int32 rowIndex = 0; rowIndex < panel.Rows.Length; rowIndex++) { ToolStripPanelRow row = panel.Rows[rowIndex]; SaveToolStripRow(row, newSettings, position, rowIndex); } }
private static void SaveSampleSettings() { var newSettings = new ToolStripSettings(); newSettings.Add(IRELEVANT_KEY, new ToolStripSetting() {Left = IRELEVANT_LEFT}); newSettings.Save(); }
public void NotExistingFile_Load_ReturnsNull() { ToolStripSettings loaded = ToolStripSettings.Load(); Assert.IsNull(loaded, "We do nothing, when settings are loaded as null."); }